Index: chrome/browser/gtk/options/content_page_gtk.cc |
=================================================================== |
--- chrome/browser/gtk/options/content_page_gtk.cc (revision 71352) |
+++ chrome/browser/gtk/options/content_page_gtk.cc (working copy) |
@@ -1,620 +0,0 @@ |
-// Copyright (c) 2010 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/gtk/options/content_page_gtk.h" |
- |
-#include <string> |
- |
-#include "app/l10n_util.h" |
-#include "base/command_line.h" |
-#include "base/utf_string_conversions.h" |
-#include "chrome/browser/defaults.h" |
-#include "chrome/browser/gtk/gtk_chrome_link_button.h" |
-#include "chrome/browser/gtk/gtk_theme_provider.h" |
-#include "chrome/browser/gtk/gtk_util.h" |
-#include "chrome/browser/gtk/import_dialog_gtk.h" |
-#include "chrome/browser/gtk/options/options_layout_gtk.h" |
-#include "chrome/browser/gtk/options/passwords_exceptions_window_gtk.h" |
-#include "chrome/browser/importer/importer_data_types.h" |
-#include "chrome/browser/prefs/pref_service.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/browser/sync/sync_ui_util.h" |
-#include "chrome/browser/ui/browser.h" |
-#include "chrome/browser/ui/browser_list.h" |
-#include "chrome/browser/ui/browser_window.h" |
-#include "chrome/common/notification_service.h" |
-#include "chrome/common/pref_names.h" |
-#include "chrome/common/url_constants.h" |
-#include "gfx/gtk_util.h" |
-#include "grit/app_resources.h" |
-#include "grit/chromium_strings.h" |
-#include "grit/generated_resources.h" |
-#include "grit/locale_settings.h" |
- |
-#if defined(OS_CHROMEOS) |
-#include "chrome/browser/chromeos/options/options_window_view.h" |
-#endif // defined(OS_CHROMEOS) |
- |
-namespace { |
- |
-// Background color for the status label when it's showing an error. |
-static const GdkColor kSyncLabelErrorBgColor = GDK_COLOR_RGB(0xff, 0x9a, 0x9a); |
- |
-// Helper for WrapLabelAtAllocationHack. |
-void OnLabelAllocate(GtkWidget* label, GtkAllocation* allocation) { |
- gtk_util::SetLabelWidth(label, allocation->width); |
- |
- // Disconnect ourselves. Repeatedly resizing based on allocation causes |
- // the dialog to become unshrinkable. |
- g_signal_handlers_disconnect_by_func( |
- label, reinterpret_cast<gpointer>(OnLabelAllocate), NULL); |
-} |
- |
-// Set the label to use a request size equal to its initial allocation |
-// size. This causes the label to wrap at the width of the container |
-// it is in, instead of at the default width. This is called a hack |
-// because GTK doesn't really work when a widget to make its size |
-// request depend on its allocation. It does, however, have the |
-// intended effect of wrapping the label at the proper width. |
-void WrapLabelAtAllocationHack(GtkWidget* label) { |
- g_signal_connect(label, "size-allocate", |
- G_CALLBACK(OnLabelAllocate), NULL); |
-} |
- |
-} // anonymous namespace |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// ContentPageGtk, public: |
- |
-ContentPageGtk::ContentPageGtk(Profile* profile) |
- : OptionsPageBase(profile), |
- sync_status_label_background_(NULL), |
- sync_status_label_(NULL), |
-#if !defined(OS_CHROMEOS) |
- sync_action_link_background_(NULL), |
- sync_action_link_(NULL), |
-#endif |
- sync_start_stop_button_(NULL), |
- sync_customize_button_(NULL), |
- privacy_dashboard_link_(NULL), |
- initializing_(true), |
- sync_service_(NULL), |
- managed_prefs_banner_(profile->GetPrefs(), OPTIONS_PAGE_CONTENT) { |
- if (profile->GetProfileSyncService()) { |
- sync_service_ = profile->GetProfileSyncService(); |
- sync_service_->AddObserver(this); |
- } |
- |
- // Prepare the group options layout. |
- scoped_ptr<OptionsLayoutBuilderGtk> |
- options_builder(OptionsLayoutBuilderGtk::CreateOptionallyCompactLayout()); |
- options_builder->AddWidget(managed_prefs_banner_.banner_widget(), false); |
- if (sync_service_) { |
- options_builder->AddOptionGroup( |
- l10n_util::GetStringUTF8(IDS_SYNC_OPTIONS_GROUP_NAME), |
- InitSyncGroup(), false); |
- UpdateSyncControls(); |
- } |
- |
- // Add preferences observers. |
- ask_to_save_passwords_.Init(prefs::kPasswordManagerEnabled, |
- profile->GetPrefs(), this); |
- form_autofill_enabled_.Init(prefs::kAutoFillEnabled, |
- profile->GetPrefs(), this); |
- if (browser_defaults::kCanToggleSystemTitleBar) { |
- use_custom_chrome_frame_.Init(prefs::kUseCustomChromeFrame, |
- profile->GetPrefs(), this); |
- } |
- |
- options_builder->AddOptionGroup( |
- l10n_util::GetStringUTF8(IDS_OPTIONS_PASSWORDS_GROUP_NAME), |
- InitPasswordSavingGroup(), false); |
- options_builder->AddOptionGroup( |
- l10n_util::GetStringUTF8(IDS_AUTOFILL_SETTING_WINDOWS_GROUP_NAME), |
- InitFormAutoFillGroup(), false); |
- options_builder->AddOptionGroup( |
- l10n_util::GetStringUTF8(IDS_OPTIONS_BROWSING_DATA_GROUP_NAME), |
- InitBrowsingDataGroup(), false); |
- options_builder->AddOptionGroup( |
- l10n_util::GetStringUTF8(IDS_APPEARANCE_GROUP_NAME), |
- InitThemesGroup(), false); |
- page_ = options_builder->get_page_widget(); |
- |
- // Load initial values. |
- NotifyPrefChanged(NULL); |
- |
- registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED, |
- NotificationService::AllSources()); |
- ObserveThemeChanged(); |
-} |
- |
-ContentPageGtk::~ContentPageGtk() { |
- if (sync_service_) |
- sync_service_->RemoveObserver(this); |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// ContentsPageView, ProfileSyncServiceObserver implementation: |
- |
-void ContentPageGtk::OnStateChanged() { |
- // If the UI controls are not yet initialized, then don't do anything. This |
- // can happen if the Options dialog is up, but the Content tab is not yet |
- // clicked. |
- if (!initializing_) |
- UpdateSyncControls(); |
-} |
- |
-/////////////////////////////////////////////////////////////////////////////// |
-// ContentPageGtk, private: |
- |
-// If |pref_name| is NULL, set the state of all the widgets. (This is used |
-// in ContentPageGtk() above to initialize the dialog.) Otherwise, reset the |
-// state of the widget for the given preference name, as it has changed. |
-void ContentPageGtk::NotifyPrefChanged(const std::string* pref_name) { |
- initializing_ = true; |
- if (!pref_name || *pref_name == prefs::kPasswordManagerEnabled) { |
- if (ask_to_save_passwords_.GetValue()) { |
- gtk_toggle_button_set_active( |
- GTK_TOGGLE_BUTTON(passwords_asktosave_radio_), TRUE); |
- } else { |
- gtk_toggle_button_set_active( |
- GTK_TOGGLE_BUTTON(passwords_neversave_radio_), TRUE); |
- } |
- bool isPasswordManagerEnabled = !ask_to_save_passwords_.IsManaged(); |
- gtk_widget_set_sensitive(passwords_asktosave_radio_, |
- isPasswordManagerEnabled); |
- gtk_widget_set_sensitive(passwords_neversave_radio_, |
- isPasswordManagerEnabled); |
- gtk_widget_set_sensitive(show_passwords_button_, |
- isPasswordManagerEnabled || |
- ask_to_save_passwords_.GetValue()); |
- } |
- if (!pref_name || *pref_name == prefs::kAutoFillEnabled) { |
- bool disabled_by_policy = form_autofill_enabled_.IsManaged() && |
- !form_autofill_enabled_.GetValue(); |
- gtk_widget_set_sensitive(autofill_button_, !disabled_by_policy); |
- } |
- if (browser_defaults::kCanToggleSystemTitleBar && |
- (!pref_name || *pref_name == prefs::kUseCustomChromeFrame)) { |
- if (use_custom_chrome_frame_.GetValue()) { |
- gtk_toggle_button_set_active( |
- GTK_TOGGLE_BUTTON(system_title_bar_hide_radio_), TRUE); |
- } else { |
- gtk_toggle_button_set_active( |
- GTK_TOGGLE_BUTTON(system_title_bar_show_radio_), TRUE); |
- } |
- } |
- initializing_ = false; |
-} |
- |
-void ContentPageGtk::Observe(NotificationType type, |
- const NotificationSource& source, |
- const NotificationDetails& details) { |
- if (type == NotificationType::BROWSER_THEME_CHANGED) |
- ObserveThemeChanged(); |
- else |
- OptionsPageBase::Observe(type, source, details); |
-} |
- |
-void ContentPageGtk::ObserveThemeChanged() { |
-#if defined(TOOLKIT_GTK) |
- GtkThemeProvider* provider = GtkThemeProvider::GetFrom(profile()); |
- bool is_gtk_theme = provider->UseGtkTheme(); |
- gtk_widget_set_sensitive(gtk_theme_button_, !is_gtk_theme); |
-#else |
- BrowserThemeProvider* provider = |
- reinterpret_cast<BrowserThemeProvider*>(profile()->GetThemeProvider()); |
- bool is_gtk_theme = false; |
-#endif |
- |
- bool is_classic_theme = !is_gtk_theme && provider->GetThemeID().empty(); |
- gtk_widget_set_sensitive(themes_reset_button_, !is_classic_theme); |
-} |
- |
-GtkWidget* ContentPageGtk::InitPasswordSavingGroup() { |
- GtkWidget* vbox = gtk_vbox_new(FALSE, gtk_util::kControlSpacing); |
- |
- // Ask to save radio button. |
- passwords_asktosave_radio_ = gtk_radio_button_new_with_label(NULL, |
- l10n_util::GetStringUTF8(IDS_OPTIONS_PASSWORDS_ASKTOSAVE).c_str()); |
- g_signal_connect(passwords_asktosave_radio_, "toggled", |
- G_CALLBACK(OnPasswordRadioToggledThunk), this); |
- gtk_box_pack_start(GTK_BOX(vbox), passwords_asktosave_radio_, FALSE, |
- FALSE, 0); |
- |
- // Never save radio button. |
- passwords_neversave_radio_ = gtk_radio_button_new_with_label_from_widget( |
- GTK_RADIO_BUTTON(passwords_asktosave_radio_), |
- l10n_util::GetStringUTF8(IDS_OPTIONS_PASSWORDS_NEVERSAVE).c_str()); |
- g_signal_connect(passwords_neversave_radio_, "toggled", |
- G_CALLBACK(OnPasswordRadioToggledThunk), this); |
- gtk_box_pack_start(GTK_BOX(vbox), passwords_neversave_radio_, FALSE, |
- FALSE, 0); |
- |
- // Add the show passwords button into its own horizontal box so it does not |
- // depend on the spacing above. |
- GtkWidget* button_hbox = gtk_hbox_new(FALSE, gtk_util::kLabelSpacing); |
- gtk_container_add(GTK_CONTAINER(vbox), button_hbox); |
- show_passwords_button_ = gtk_button_new_with_label( |
- l10n_util::GetStringUTF8(IDS_OPTIONS_PASSWORDS_SHOWPASSWORDS).c_str()); |
- g_signal_connect(show_passwords_button_, "clicked", |
- G_CALLBACK(OnShowPasswordsButtonClickedThunk), this); |
- gtk_box_pack_start(GTK_BOX(button_hbox), show_passwords_button_, FALSE, |
- FALSE, 0); |
- |
- return vbox; |
-} |
- |
-GtkWidget* ContentPageGtk::InitFormAutoFillGroup() { |
- GtkWidget* vbox = gtk_vbox_new(FALSE, gtk_util::kControlSpacing); |
- |
- GtkWidget* button_hbox = gtk_hbox_new(FALSE, gtk_util::kControlSpacing); |
- gtk_container_add(GTK_CONTAINER(vbox), button_hbox); |
- |
- // AutoFill button. |
- autofill_button_ = gtk_button_new_with_label( |
- l10n_util::GetStringUTF8(IDS_AUTOFILL_OPTIONS).c_str()); |
- |
- g_signal_connect(G_OBJECT(autofill_button_), "clicked", |
- G_CALLBACK(OnAutoFillButtonClickedThunk), this); |
- gtk_box_pack_start(GTK_BOX(button_hbox), autofill_button_, FALSE, FALSE, 0); |
- |
- return vbox; |
-} |
- |
-GtkWidget* ContentPageGtk::InitBrowsingDataGroup() { |
- GtkWidget* button_box = gtk_hbox_new(FALSE, gtk_util::kControlSpacing); |
- |
- // Import button. |
- GtkWidget* import_button = gtk_button_new_with_label( |
- l10n_util::GetStringUTF8(IDS_OPTIONS_IMPORT_DATA_BUTTON).c_str()); |
- g_signal_connect(import_button, "clicked", |
- G_CALLBACK(OnImportButtonClickedThunk), this); |
- gtk_box_pack_start(GTK_BOX(button_box), import_button, FALSE, FALSE, 0); |
- |
- return button_box; |
-} |
- |
-GtkWidget* ContentPageGtk::InitThemesGroup() { |
- GtkWidget* vbox = gtk_vbox_new(FALSE, gtk_util::kControlSpacing); |
- GtkWidget* hbox = gtk_hbox_new(FALSE, gtk_util::kControlSpacing); |
- |
-#if defined(TOOLKIT_GTK) |
- // GTK theme button. |
- gtk_theme_button_ = gtk_button_new_with_label( |
- l10n_util::GetStringUTF8(IDS_THEMES_GTK_BUTTON).c_str()); |
- g_signal_connect(gtk_theme_button_, "clicked", |
- G_CALLBACK(OnGtkThemeButtonClickedThunk), this); |
- gtk_box_pack_start(GTK_BOX(hbox), gtk_theme_button_, FALSE, FALSE, 0); |
-#endif |
- |
- // Reset theme button. |
- themes_reset_button_ = gtk_button_new_with_label( |
- l10n_util::GetStringUTF8(IDS_THEMES_SET_CLASSIC).c_str()); |
- g_signal_connect(themes_reset_button_, "clicked", |
- G_CALLBACK(OnResetDefaultThemeButtonClickedThunk), this); |
- gtk_box_pack_start(GTK_BOX(hbox), themes_reset_button_, FALSE, FALSE, 0); |
- |
- // Get themes button. |
- GtkWidget* themes_gallery_button = gtk_chrome_link_button_new( |
- l10n_util::GetStringUTF8(IDS_THEMES_GALLERY_BUTTON).c_str()); |
- g_signal_connect(themes_gallery_button, "clicked", |
- G_CALLBACK(OnGetThemesButtonClickedThunk), this); |
- gtk_box_pack_start(GTK_BOX(hbox), themes_gallery_button, FALSE, FALSE, 0); |
- |
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0); |
- |
- // "Use system title bar and borders" radio buttons. |
- if (browser_defaults::kCanToggleSystemTitleBar) { |
- // Use system title bar and borders |
- system_title_bar_show_radio_ = gtk_radio_button_new_with_label(NULL, |
- l10n_util::GetStringUTF8(IDS_SHOW_WINDOW_DECORATIONS_RADIO).c_str()); |
- g_signal_connect(system_title_bar_show_radio_, "toggled", |
- G_CALLBACK(OnSystemTitleBarRadioToggledThunk), this); |
- gtk_box_pack_start(GTK_BOX(vbox), system_title_bar_show_radio_, FALSE, |
- FALSE, 0); |
- |
- // Hide system title bar and use custom borders |
- system_title_bar_hide_radio_ = gtk_radio_button_new_with_label_from_widget( |
- GTK_RADIO_BUTTON(system_title_bar_show_radio_), |
- l10n_util::GetStringUTF8(IDS_HIDE_WINDOW_DECORATIONS_RADIO).c_str()); |
- g_signal_connect(system_title_bar_hide_radio_, "toggled", |
- G_CALLBACK(OnSystemTitleBarRadioToggledThunk), this); |
- gtk_box_pack_start(GTK_BOX(vbox), system_title_bar_hide_radio_, FALSE, |
- FALSE, 0); |
- } |
- |
- return vbox; |
-} |
- |
-GtkWidget* ContentPageGtk::InitSyncGroup() { |
- GtkWidget* vbox = gtk_vbox_new(FALSE, gtk_util::kControlSpacing); |
- |
- // Sync label. |
- sync_status_label_background_ = gtk_event_box_new(); |
- sync_status_label_ = gtk_label_new(""); |
- WrapLabelAtAllocationHack(sync_status_label_); |
- |
- gtk_misc_set_alignment(GTK_MISC(sync_status_label_), 0, 0.5); |
- gtk_box_pack_start(GTK_BOX(vbox), sync_status_label_background_, FALSE, |
- FALSE, 0); |
- gtk_container_add(GTK_CONTAINER(sync_status_label_background_), |
- sync_status_label_); |
- |
-#if !defined(OS_CHROMEOS) |
- // Sync action link. |
- GtkWidget* link_hbox = gtk_hbox_new(FALSE, gtk_util::kLabelSpacing); |
- sync_action_link_background_ = gtk_event_box_new(); |
- sync_action_link_ = gtk_chrome_link_button_new(""); |
- g_signal_connect(sync_action_link_, "clicked", |
- G_CALLBACK(OnSyncActionLinkClickedThunk), this); |
- gtk_box_pack_start(GTK_BOX(vbox), link_hbox, FALSE, FALSE, 0); |
- gtk_box_pack_start(GTK_BOX(link_hbox), sync_action_link_background_, FALSE, |
- FALSE, 0); |
- gtk_container_add(GTK_CONTAINER(sync_action_link_background_), |
- sync_action_link_); |
- gtk_widget_hide(sync_action_link_background_); |
-#endif |
- |
- // Add the sync button into its own horizontal box so it does not |
- // depend on the spacing above. |
- GtkWidget* button_hbox = gtk_hbox_new(FALSE, gtk_util::kLabelSpacing); |
- gtk_container_add(GTK_CONTAINER(vbox), button_hbox); |
- sync_start_stop_button_ = gtk_button_new_with_label(""); |
- g_signal_connect(sync_start_stop_button_, "clicked", |
- G_CALLBACK(OnSyncStartStopButtonClickedThunk), this); |
- gtk_box_pack_start(GTK_BOX(button_hbox), sync_start_stop_button_, FALSE, |
- FALSE, 0); |
- sync_customize_button_ = gtk_button_new_with_label(""); |
- g_signal_connect(sync_customize_button_, "clicked", |
- G_CALLBACK(OnSyncCustomizeButtonClickedThunk), this); |
- gtk_box_pack_start(GTK_BOX(button_hbox), sync_customize_button_, FALSE, |
- FALSE, 0); |
- |
- // Add the privacy dashboard link. |
- GtkWidget* dashboard_link_hbox = |
- gtk_hbox_new(FALSE, gtk_util::kLabelSpacing); |
- GtkWidget* dashboard_link_background = gtk_event_box_new(); |
- std::string dashboard_link_label = |
- l10n_util::GetStringUTF8(IDS_SYNC_PRIVACY_DASHBOARD_LINK_LABEL); |
- privacy_dashboard_link_ = |
- gtk_chrome_link_button_new(dashboard_link_label.c_str()); |
- g_signal_connect(privacy_dashboard_link_, "clicked", |
- G_CALLBACK(OnPrivacyDashboardLinkClickedThunk), this); |
- gtk_box_pack_start(GTK_BOX(vbox), dashboard_link_hbox, FALSE, FALSE, 0); |
- gtk_box_pack_start(GTK_BOX(dashboard_link_hbox), |
- dashboard_link_background, FALSE, FALSE, 0); |
- gtk_container_add(GTK_CONTAINER(dashboard_link_background), |
- privacy_dashboard_link_); |
- |
- |
- return vbox; |
-} |
- |
-void ContentPageGtk::UpdateSyncControls() { |
- DCHECK(sync_service_); |
- string16 status_label; |
- string16 link_label; |
- std::string customize_button_label; |
- bool managed = sync_service_->IsManaged(); |
- bool sync_setup_completed = sync_service_->HasSyncSetupCompleted(); |
- bool status_has_error = sync_ui_util::GetStatusLabels(sync_service_, |
- &status_label, &link_label) == sync_ui_util::SYNC_ERROR; |
- customize_button_label = |
- l10n_util::GetStringUTF8(IDS_SYNC_CUSTOMIZE_BUTTON_LABEL); |
- |
- std::string start_stop_button_label; |
- bool is_start_stop_button_visible = false; |
- bool is_start_stop_button_sensitive = false; |
- if (sync_setup_completed) { |
- start_stop_button_label = |
- l10n_util::GetStringUTF8(IDS_SYNC_STOP_SYNCING_BUTTON_LABEL); |
-#if defined(OS_CHROMEOS) |
- is_start_stop_button_visible = false; |
-#else |
- is_start_stop_button_visible = true; |
-#endif |
- is_start_stop_button_sensitive = !managed; |
- } else if (sync_service_->SetupInProgress()) { |
- start_stop_button_label = |
- l10n_util::GetStringUTF8(IDS_SYNC_NTP_SETUP_IN_PROGRESS); |
- is_start_stop_button_visible = true; |
- is_start_stop_button_sensitive = false; |
- } else { |
- start_stop_button_label = |
- l10n_util::GetStringUTF8(IDS_SYNC_START_SYNC_BUTTON_LABEL); |
- is_start_stop_button_visible = true; |
- is_start_stop_button_sensitive = !managed; |
- } |
- gtk_widget_set_no_show_all(sync_start_stop_button_, |
- !is_start_stop_button_visible); |
- if (is_start_stop_button_visible) |
- gtk_widget_show(sync_start_stop_button_); |
- else |
- gtk_widget_hide(sync_start_stop_button_); |
- gtk_widget_set_sensitive(sync_start_stop_button_, |
- is_start_stop_button_sensitive); |
- gtk_button_set_label(GTK_BUTTON(sync_start_stop_button_), |
- start_stop_button_label.c_str()); |
- |
- gtk_label_set_label(GTK_LABEL(sync_status_label_), |
- UTF16ToUTF8(status_label).c_str()); |
- |
- gtk_widget_set_child_visible(sync_customize_button_, |
- sync_setup_completed && !status_has_error); |
- gtk_button_set_label(GTK_BUTTON(sync_customize_button_), |
- customize_button_label.c_str()); |
- gtk_widget_set_sensitive(sync_customize_button_, !managed); |
-#if !defined(OS_CHROMEOS) |
- gtk_chrome_link_button_set_label(GTK_CHROME_LINK_BUTTON(sync_action_link_), |
- UTF16ToUTF8(link_label).c_str()); |
- if (link_label.empty()) { |
- gtk_widget_set_no_show_all(sync_action_link_background_, TRUE); |
- gtk_widget_hide(sync_action_link_background_); |
- } else { |
- gtk_widget_set_no_show_all(sync_action_link_background_, FALSE); |
- gtk_widget_show(sync_action_link_background_); |
- } |
- gtk_widget_set_sensitive(sync_action_link_, !managed); |
-#endif |
- if (status_has_error) { |
- gtk_widget_modify_bg(sync_status_label_background_, GTK_STATE_NORMAL, |
- &kSyncLabelErrorBgColor); |
-#if !defined(OS_CHROMEOS) |
- gtk_widget_modify_bg(sync_action_link_background_, GTK_STATE_NORMAL, |
- &kSyncLabelErrorBgColor); |
-#endif |
- } else { |
- gtk_widget_modify_bg(sync_status_label_background_, GTK_STATE_NORMAL, NULL); |
-#if !defined(OS_CHROMEOS) |
- gtk_widget_modify_bg(sync_action_link_background_, GTK_STATE_NORMAL, NULL); |
-#endif |
- } |
-} |
- |
-void ContentPageGtk::OnAutoFillButtonClicked(GtkWidget* widget) { |
- ShowAutoFillDialog(NULL, profile()->GetPersonalDataManager(), profile()); |
-} |
- |
-void ContentPageGtk::OnImportButtonClicked(GtkWidget* widget) { |
- ImportDialogGtk::Show( |
- GTK_WINDOW(gtk_widget_get_toplevel(widget)), |
- profile(), importer::ALL); |
-} |
- |
-void ContentPageGtk::OnGtkThemeButtonClicked(GtkWidget* widget) { |
- UserMetricsRecordAction(UserMetricsAction("Options_GtkThemeSet"), |
- profile()->GetPrefs()); |
- profile()->SetNativeTheme(); |
-} |
- |
-void ContentPageGtk::OnResetDefaultThemeButtonClicked(GtkWidget* widget) { |
- UserMetricsRecordAction(UserMetricsAction("Options_ThemesReset"), |
- profile()->GetPrefs()); |
- profile()->ClearTheme(); |
-} |
- |
-void ContentPageGtk::OnGetThemesButtonClicked(GtkWidget* widget) { |
- UserMetricsRecordAction(UserMetricsAction("Options_ThemesGallery"), |
- profile()->GetPrefs()); |
-#if defined(OS_CHROMEOS) |
- // Close options dialog for ChromeOS becuase it is always stacked on top |
- // of browser window and blocks user's view. |
- chromeos::CloseOptionsWindow(); |
-#endif // defined(OS_CHROMEOS) |
- |
- BrowserList::GetLastActive()->OpenThemeGalleryTabAndActivate(); |
-} |
- |
-void ContentPageGtk::OnSystemTitleBarRadioToggled(GtkWidget* widget) { |
- DCHECK(browser_defaults::kCanToggleSystemTitleBar); |
- if (initializing_) |
- return; |
- |
- // We get two signals when selecting a radio button, one for the old radio |
- // being toggled off and one for the new one being toggled on. Ignore the |
- // signal for the toggling off the old button. |
- if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) |
- return; |
- |
- bool use_custom = gtk_toggle_button_get_active( |
- GTK_TOGGLE_BUTTON(system_title_bar_hide_radio_)); |
- if (use_custom) { |
- UserMetricsRecordAction(UserMetricsAction("Options_CustomFrame_Enable"), |
- profile()->GetPrefs()); |
- } else { |
- UserMetricsRecordAction(UserMetricsAction("Options_CustomFrame_Disable"), |
- profile()->GetPrefs()); |
- } |
- |
- use_custom_chrome_frame_.SetValue(use_custom); |
-} |
- |
-void ContentPageGtk::OnShowPasswordsButtonClicked(GtkWidget* widget) { |
- ShowPasswordsExceptionsWindow(profile()); |
-} |
- |
-void ContentPageGtk::OnPasswordRadioToggled(GtkWidget* widget) { |
- if (initializing_) |
- return; |
- |
- // We get two signals when selecting a radio button, one for the old radio |
- // being toggled off and one for the new one being toggled on. Ignore the |
- // signal for the toggling off the old button. |
- if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget))) |
- return; |
- |
- bool enabled = gtk_toggle_button_get_active( |
- GTK_TOGGLE_BUTTON(passwords_asktosave_radio_)); |
- if (enabled) { |
- UserMetricsRecordAction(UserMetricsAction("Options_PasswordManager_Enable"), |
- profile()->GetPrefs()); |
- } else { |
- UserMetricsRecordAction( |
- UserMetricsAction("Options_PasswordManager_Disable"), |
- profile()->GetPrefs()); |
- } |
- ask_to_save_passwords_.SetValue(enabled); |
-} |
- |
-void ContentPageGtk::OnSyncStartStopButtonClicked(GtkWidget* widget) { |
- DCHECK(sync_service_ && !sync_service_->IsManaged()); |
- |
- if (sync_service_->HasSyncSetupCompleted()) { |
- GtkWidget* dialog = gtk_message_dialog_new( |
- GTK_WINDOW(gtk_widget_get_toplevel(widget)), |
- static_cast<GtkDialogFlags>(GTK_DIALOG_MODAL), |
- GTK_MESSAGE_WARNING, |
- GTK_BUTTONS_NONE, |
- "%s", |
- l10n_util::GetStringFUTF8( |
- IDS_SYNC_STOP_SYNCING_EXPLANATION_LABEL, |
- l10n_util::GetStringUTF16(IDS_PRODUCT_NAME)).c_str()); |
- gtk_util::ApplyMessageDialogQuirks(dialog); |
- gtk_window_set_title(GTK_WINDOW(dialog), |
- l10n_util::GetStringUTF8( |
- IDS_SYNC_STOP_SYNCING_DIALOG_TITLE).c_str()); |
- gtk_dialog_add_buttons( |
- GTK_DIALOG(dialog), |
- l10n_util::GetStringUTF8(IDS_CANCEL).c_str(), |
- GTK_RESPONSE_REJECT, |
- l10n_util::GetStringUTF8( |
- IDS_SYNC_STOP_SYNCING_CONFIRM_BUTTON_LABEL).c_str(), |
- GTK_RESPONSE_ACCEPT, |
- NULL); |
- |
- g_signal_connect(dialog, "response", |
- G_CALLBACK(OnStopSyncDialogResponseThunk), this); |
- |
- gtk_util::ShowDialog(dialog); |
- return; |
- } else { |
- sync_service_->ShowLoginDialog(NULL); |
- ProfileSyncService::SyncEvent(ProfileSyncService::START_FROM_OPTIONS); |
- } |
-} |
- |
-void ContentPageGtk::OnSyncCustomizeButtonClicked(GtkWidget* widget) { |
- // sync_customize_button_ should be invisible if sync is not yet set up. |
- DCHECK(sync_service_ && !sync_service_->IsManaged() && |
- sync_service_->HasSyncSetupCompleted()); |
- sync_service_->ShowConfigure(NULL); |
-} |
- |
-void ContentPageGtk::OnSyncActionLinkClicked(GtkWidget* widget) { |
- DCHECK(sync_service_ && !sync_service_->IsManaged()); |
- sync_service_->ShowConfigure(NULL); |
-} |
- |
-void ContentPageGtk::OnStopSyncDialogResponse(GtkWidget* widget, int response) { |
- if (response == GTK_RESPONSE_ACCEPT) { |
- sync_service_->DisableForUser(); |
- ProfileSyncService::SyncEvent(ProfileSyncService::STOP_FROM_OPTIONS); |
- } |
- gtk_widget_destroy(widget); |
-} |
- |
-void ContentPageGtk::OnPrivacyDashboardLinkClicked(GtkWidget* widget) { |
- BrowserList::GetLastActive()->OpenPrivacyDashboardTabAndActivate(); |
-} |