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

Unified Diff: chrome/browser/gtk/options/content_page_gtk.cc

Issue 6251001: Move chrome/browser/gtk/ to chrome/browser/ui/gtk/... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 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
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();
-}
« no previous file with comments | « chrome/browser/gtk/options/content_page_gtk.h ('k') | chrome/browser/gtk/options/content_settings_window_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698