Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(62)

Unified Diff: chrome/browser/ui/gtk/first_run_dialog.cc

Issue 9285002: Remove the first-run search engine dialog/ballot. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync and merge. Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/gtk/first_run_dialog.h ('k') | chrome/browser/ui/views/first_run_bubble.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/gtk/first_run_dialog.cc
diff --git a/chrome/browser/ui/gtk/first_run_dialog.cc b/chrome/browser/ui/gtk/first_run_dialog.cc
index 5d61dd07cc90cf85ffcb16cbd5351bbc89554959..e8e93fa65491a31f659399e1f6de08f9bb3b7733 100644
--- a/chrome/browser/ui/gtk/first_run_dialog.cc
+++ b/chrome/browser/ui/gtk/first_run_dialog.cc
@@ -14,10 +14,6 @@
#include "chrome/browser/google/google_util.h"
#include "chrome/browser/platform_util.h"
#include "chrome/browser/process_singleton.h"
-#include "chrome/browser/profiles/profile.h"
-#include "chrome/browser/search_engines/template_url.h"
-#include "chrome/browser/search_engines/template_url_service.h"
-#include "chrome/browser/search_engines/template_url_service_factory.h"
#include "chrome/browser/shell_integration.h"
#include "chrome/browser/ui/gtk/gtk_chrome_link_button.h"
#include "chrome/browser/ui/gtk/gtk_util.h"
@@ -32,7 +28,6 @@
#include "ui/base/gtk/gtk_hig_constants.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/resource/resource_bundle.h"
-#include "ui/gfx/image/image.h"
#if defined(USE_LINUX_BREAKPAD)
#include "chrome/app/breakpad_linux.h"
@@ -45,28 +40,6 @@
namespace {
-const gchar* kSearchEngineKey = "template-url-search-engine";
-
-// Height of the label that displays the search engine's logo (in lieu of the
-// actual logo) in chromium.
-const int kLogoLabelHeight = 100;
-
-// Size of the small logo (for when we show 4 search engines).
-const int kLogoLabelWidthSmall = 132;
-const int kLogoLabelHeightSmall = 88;
-
-// The number of search engine options we normally show. It may be less than
-// this number if there are not enough search engines for the current locale,
-// or more if the user's imported default is not one of the top search engines
-// for the current locale.
-const size_t kNormalBallotSize = 3;
-
-// The width of the explanatory label. The 180 is the width of the large images.
-const int kExplanationWidth = kNormalBallotSize * 180;
-
-// Horizontal spacing between search engine choices.
-const int kSearchEngineSpacing = 6;
-
// Set the (x, y) coordinates of the welcome message (which floats on top of
// the omnibox image at the top of the first run dialog).
void SetWelcomePosition(GtkFloatingContainer* container,
@@ -96,23 +69,14 @@ void SetWelcomePosition(GtkFloatingContainer* container,
namespace first_run {
-void ShowFirstRunDialog(Profile* profile,
- bool randomize_search_engine_order) {
- FirstRunDialog::Show(profile, randomize_search_engine_order);
+void ShowFirstRunDialog(Profile* profile) {
+ FirstRunDialog::Show();
}
} // namespace first_run
// static
-bool FirstRunDialog::Show(Profile* profile,
- bool randomize_search_engine_order) {
- // Figure out which dialogs we will show.
- // If the default search is managed via policy, we won't ask.
- const TemplateURLService* search_engines_model =
- TemplateURLServiceFactory::GetForProfile(profile);
- bool show_search_engines_dialog =
- first_run::ShouldShowSearchEngineSelector(search_engines_model);
-
+bool FirstRunDialog::Show() {
#if defined(GOOGLE_CHROME_BUILD)
// If the metrics reporting is managed, we won't ask.
const PrefService::Preference* metrics_reporting_pref =
@@ -124,15 +88,12 @@ bool FirstRunDialog::Show(Profile* profile,
bool show_reporting_dialog = false;
#endif
- if (!show_search_engines_dialog && !show_reporting_dialog)
+ if (!show_reporting_dialog)
return true; // Nothing to do
int response = -1;
// Object deletes itself.
- new FirstRunDialog(profile,
- show_reporting_dialog,
- show_search_engines_dialog,
- &response);
+ new FirstRunDialog(show_reporting_dialog, &response);
// TODO(port): it should be sufficient to just run the dialog:
// int response = gtk_dialog_run(GTK_DIALOG(dialog));
@@ -144,103 +105,18 @@ bool FirstRunDialog::Show(Profile* profile,
return (response == GTK_RESPONSE_ACCEPT);
}
-FirstRunDialog::FirstRunDialog(Profile* profile,
- bool show_reporting_dialog,
- bool show_search_engines_dialog,
- int* response)
- : search_engine_window_(NULL),
- dialog_(NULL),
+FirstRunDialog::FirstRunDialog(bool show_reporting_dialog, int* response)
+ : dialog_(NULL),
report_crashes_(NULL),
make_default_(NULL),
- profile_(profile),
- chosen_search_engine_(NULL),
show_reporting_dialog_(show_reporting_dialog),
response_(response) {
- if (!show_search_engines_dialog) {
- ShowReportingDialog();
- return;
- }
- search_engines_model_ = TemplateURLServiceFactory::GetForProfile(profile_);
-
- ShowSearchEngineWindow();
-
- search_engines_model_->AddObserver(this);
- if (search_engines_model_->loaded())
- OnTemplateURLServiceChanged();
- else
- search_engines_model_->Load();
+ ShowReportingDialog();
}
FirstRunDialog::~FirstRunDialog() {
}
-void FirstRunDialog::ShowSearchEngineWindow() {
- search_engine_window_ = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_deletable(GTK_WINDOW(search_engine_window_), FALSE);
- gtk_window_set_title(
- GTK_WINDOW(search_engine_window_),
- l10n_util::GetStringUTF8(IDS_FIRSTRUN_DLG_TITLE).c_str());
- gtk_window_set_resizable(GTK_WINDOW(search_engine_window_), FALSE);
- g_signal_connect(search_engine_window_, "destroy",
- G_CALLBACK(OnSearchEngineWindowDestroyThunk), this);
- GtkWidget* content_area = gtk_vbox_new(FALSE, 0);
- gtk_container_add(GTK_CONTAINER(search_engine_window_), content_area);
-
- GdkPixbuf* pixbuf =
- ui::ResourceBundle::GetSharedInstance().GetRTLEnabledPixbufNamed(
- IDR_SEARCH_ENGINE_DIALOG_TOP);
- GtkWidget* top_image = gtk_image_new_from_pixbuf(pixbuf);
- // Right align the image.
- gtk_misc_set_alignment(GTK_MISC(top_image), 1, 0);
- gtk_widget_set_size_request(top_image, 0, -1);
-
- GtkWidget* welcome_message = gtk_util::CreateBoldLabel(
- l10n_util::GetStringUTF8(IDS_FR_SEARCH_MAIN_LABEL));
- // Force the font size to make sure the label doesn't overlap the image.
- // 13.4px == 10pt @ 96dpi
- gtk_util::ForceFontSizePixels(welcome_message, 13.4);
-
- GtkWidget* top_area = gtk_floating_container_new();
- gtk_container_add(GTK_CONTAINER(top_area), top_image);
- gtk_floating_container_add_floating(GTK_FLOATING_CONTAINER(top_area),
- welcome_message);
- g_signal_connect(top_area, "set-floating-position",
- G_CALLBACK(SetWelcomePosition), welcome_message);
-
- gtk_box_pack_start(GTK_BOX(content_area), top_area,
- FALSE, FALSE, 0);
-
- GtkWidget* bubble_area_background = gtk_event_box_new();
- gtk_widget_modify_bg(bubble_area_background,
- GTK_STATE_NORMAL, &ui::kGdkWhite);
-
- GtkWidget* bubble_area_box = gtk_vbox_new(FALSE, 0);
- gtk_container_set_border_width(GTK_CONTAINER(bubble_area_box),
- ui::kContentAreaSpacing);
- gtk_container_add(GTK_CONTAINER(bubble_area_background),
- bubble_area_box);
-
- GtkWidget* explanation = gtk_label_new(
- l10n_util::GetStringFUTF8(IDS_FR_SEARCH_TEXT,
- l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)).c_str());
- gtk_util::SetLabelColor(explanation, &ui::kGdkBlack);
- gtk_util::SetLabelWidth(explanation, kExplanationWidth);
- gtk_box_pack_start(GTK_BOX(bubble_area_box), explanation, FALSE, FALSE, 0);
-
- // We will fill this in after the TemplateURLService has loaded.
- // GtkHButtonBox because we want all children to have the same size.
- search_engine_hbox_ = gtk_hbutton_box_new();
- gtk_box_set_spacing(GTK_BOX(search_engine_hbox_), kSearchEngineSpacing);
- gtk_box_pack_start(GTK_BOX(bubble_area_box), search_engine_hbox_,
- FALSE, FALSE, 0);
-
- gtk_box_pack_start(GTK_BOX(content_area), bubble_area_background,
- TRUE, TRUE, 0);
-
- gtk_widget_show_all(content_area);
- gtk_window_present(GTK_WINDOW(search_engine_window_));
-}
-
void FirstRunDialog::ShowReportingDialog() {
// The purpose of the dialog is to ask the user to enable stats and crash
// reporting. This setting may be controlled through configuration management
@@ -299,105 +175,6 @@ void FirstRunDialog::ShowReportingDialog() {
gtk_widget_show_all(dialog_);
}
-void FirstRunDialog::OnTemplateURLServiceChanged() {
- // We only watch the search engine model change once, on load. Remove
- // observer so we don't try to redraw if engines change under us.
- search_engines_model_->RemoveObserver(this);
-
- // Add search engines in |search_engines_model_| to buttons list.
- std::vector<const TemplateURL*> ballot_engines =
- search_engines_model_->GetTemplateURLs();
- // Drop any not in the first 3.
- if (ballot_engines.size() > kNormalBallotSize)
- ballot_engines.resize(kNormalBallotSize);
-
- const TemplateURL* default_search_engine =
- search_engines_model_->GetDefaultSearchProvider();
- if (std::find(ballot_engines.begin(),
- ballot_engines.end(),
- default_search_engine) ==
- ballot_engines.end()) {
- ballot_engines.push_back(default_search_engine);
- }
-
- std::string choose_text = l10n_util::GetStringUTF8(IDS_FR_SEARCH_CHOOSE);
- for (std::vector<const TemplateURL*>::iterator search_engine_iter =
- ballot_engines.begin();
- search_engine_iter < ballot_engines.end();
- ++search_engine_iter) {
- // Create a container for the search engine widgets.
- GtkWidget* vbox = gtk_vbox_new(FALSE, ui::kControlSpacing);
-
- // We show text on Chromium and images on Google Chrome.
- bool show_images = false;
-#if defined(GOOGLE_CHROME_BUILD)
- show_images = true;
-#endif
-
- // Create the image (maybe).
- int logo_id = (*search_engine_iter)->logo_id();
- if (show_images && logo_id > 0) {
- GdkPixbuf* pixbuf =
- ui::ResourceBundle::GetSharedInstance().GetNativeImageNamed(logo_id);
- if (ballot_engines.size() > kNormalBallotSize) {
- GdkPixbuf* old = pixbuf;
- pixbuf = gdk_pixbuf_scale_simple(pixbuf,
- kLogoLabelWidthSmall,
- kLogoLabelHeightSmall,
- GDK_INTERP_HYPER);
- g_object_unref(old);
- } else {
- g_object_ref(pixbuf);
- }
-
- GtkWidget* image = gtk_image_new_from_pixbuf(pixbuf);
- gtk_box_pack_start(GTK_BOX(vbox), image, FALSE, FALSE, 0);
- g_object_unref(pixbuf);
- } else {
- GtkWidget* logo_label = gtk_label_new(NULL);
- char* markup = g_markup_printf_escaped(
- "<span weight='bold' size='x-large' color='black'>%s</span>",
- UTF16ToUTF8((*search_engine_iter)->short_name()).c_str());
- gtk_label_set_markup(GTK_LABEL(logo_label), markup);
- g_free(markup);
- gtk_widget_set_size_request(logo_label, -1,
- ballot_engines.size() > kNormalBallotSize ? kLogoLabelHeightSmall :
- kLogoLabelHeight);
- gtk_box_pack_start(GTK_BOX(vbox), logo_label, FALSE, FALSE, 0);
- }
-
- // Create the button.
- GtkWidget* button = gtk_button_new_with_label(choose_text.c_str());
- g_signal_connect(button, "clicked",
- G_CALLBACK(OnSearchEngineButtonClickedThunk), this);
- g_object_set_data(G_OBJECT(button), kSearchEngineKey,
- const_cast<TemplateURL*>(*search_engine_iter));
-
- GtkWidget* button_centerer = gtk_hbox_new(FALSE, 0);
- gtk_box_pack_start(GTK_BOX(button_centerer), button, TRUE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(vbox), button_centerer, FALSE, FALSE, 0);
-
- gtk_container_add(GTK_CONTAINER(search_engine_hbox_), vbox);
- gtk_widget_show_all(search_engine_hbox_);
- }
-}
-
-void FirstRunDialog::OnSearchEngineButtonClicked(GtkWidget* sender) {
- chosen_search_engine_ = static_cast<TemplateURL*>(
- g_object_get_data(G_OBJECT(sender), kSearchEngineKey));
- gtk_widget_destroy(search_engine_window_);
-}
-
-void FirstRunDialog::OnSearchEngineWindowDestroy(GtkWidget* sender) {
- search_engine_window_ = NULL;
- if (chosen_search_engine_) {
- search_engines_model_->SetDefaultSearchProvider(chosen_search_engine_);
- ShowReportingDialog();
- } else {
- FirstRunDone();
- }
-}
-
void FirstRunDialog::OnResponseDialog(GtkWidget* widget, int response) {
if (dialog_)
gtk_widget_hide_all(dialog_);
« no previous file with comments | « chrome/browser/ui/gtk/first_run_dialog.h ('k') | chrome/browser/ui/views/first_run_bubble.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698