| OLD | NEW |
| 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/views/options/content_page_view.h" | 5 #include "chrome/browser/views/options/content_page_view.h" |
| 6 | 6 |
| 7 #include <windows.h> | 7 #include <windows.h> |
| 8 #include <shlobj.h> | 8 #include <shlobj.h> |
| 9 #include <vsstyle.h> | 9 #include <vsstyle.h> |
| 10 #include <vssym32.h> | 10 #include <vssym32.h> |
| (...skipping 18 matching lines...) Expand all Loading... |
| 29 #include "views/grid_layout.h" | 29 #include "views/grid_layout.h" |
| 30 #include "views/standard_layout.h" | 30 #include "views/standard_layout.h" |
| 31 #include "views/widget/widget.h" | 31 #include "views/widget/widget.h" |
| 32 #include "views/window/window.h" | 32 #include "views/window/window.h" |
| 33 | 33 |
| 34 namespace { | 34 namespace { |
| 35 | 35 |
| 36 const int kPasswordSavingRadioGroup = 1; | 36 const int kPasswordSavingRadioGroup = 1; |
| 37 const int kFormAutofillRadioGroup = 2; | 37 const int kFormAutofillRadioGroup = 2; |
| 38 | 38 |
| 39 #if defined(BROWSER_SYNC) | |
| 40 // Background color for the status label when it's showing an error. | 39 // Background color for the status label when it's showing an error. |
| 41 static const SkColor kSyncLabelErrorBgColor = SkColorSetRGB(0xff, 0x9a, 0x9a); | 40 static const SkColor kSyncLabelErrorBgColor = SkColorSetRGB(0xff, 0x9a, 0x9a); |
| 42 | 41 |
| 43 static views::Background* CreateErrorBackground() { | 42 static views::Background* CreateErrorBackground() { |
| 44 return views::Background::CreateSolidBackground(kSyncLabelErrorBgColor); | 43 return views::Background::CreateSolidBackground(kSyncLabelErrorBgColor); |
| 45 } | 44 } |
| 46 #endif | 45 |
| 47 } // namespace | 46 } // namespace |
| 48 | 47 |
| 49 ContentPageView::ContentPageView(Profile* profile) | 48 ContentPageView::ContentPageView(Profile* profile) |
| 50 : passwords_exceptions_button_(NULL), | 49 : passwords_exceptions_button_(NULL), |
| 51 passwords_group_(NULL), | 50 passwords_group_(NULL), |
| 52 passwords_asktosave_radio_(NULL), | 51 passwords_asktosave_radio_(NULL), |
| 53 passwords_neversave_radio_(NULL), | 52 passwords_neversave_radio_(NULL), |
| 54 form_autofill_asktosave_radio_(NULL), | 53 form_autofill_asktosave_radio_(NULL), |
| 55 form_autofill_neversave_radio_(NULL), | 54 form_autofill_neversave_radio_(NULL), |
| 56 themes_group_(NULL), | 55 themes_group_(NULL), |
| 57 themes_reset_button_(NULL), | 56 themes_reset_button_(NULL), |
| 58 themes_gallery_link_(NULL), | 57 themes_gallery_link_(NULL), |
| 59 browsing_data_label_(NULL), | 58 browsing_data_label_(NULL), |
| 60 browsing_data_group_(NULL), | 59 browsing_data_group_(NULL), |
| 61 import_button_(NULL), | 60 import_button_(NULL), |
| 62 clear_data_button_(NULL), | 61 clear_data_button_(NULL), |
| 63 #if defined(BROWSER_SYNC) | |
| 64 sync_group_(NULL), | 62 sync_group_(NULL), |
| 65 sync_status_label_(NULL), | 63 sync_status_label_(NULL), |
| 66 sync_action_link_(NULL), | 64 sync_action_link_(NULL), |
| 67 sync_start_stop_button_(NULL), | 65 sync_start_stop_button_(NULL), |
| 68 sync_service_(NULL), | 66 sync_service_(NULL), |
| 69 #endif | |
| 70 OptionsPageView(profile) { | 67 OptionsPageView(profile) { |
| 71 #if defined(BROWSER_SYNC) | |
| 72 if (profile->GetProfileSyncService()) { | 68 if (profile->GetProfileSyncService()) { |
| 73 sync_service_ = profile->GetProfileSyncService(); | 69 sync_service_ = profile->GetProfileSyncService(); |
| 74 sync_service_->AddObserver(this); | 70 sync_service_->AddObserver(this); |
| 75 #endif | |
| 76 } | 71 } |
| 77 } | 72 } |
| 78 | 73 |
| 79 ContentPageView::~ContentPageView() { | 74 ContentPageView::~ContentPageView() { |
| 80 #if defined(BROWSER_SYNC) | |
| 81 if (sync_service_) | 75 if (sync_service_) |
| 82 sync_service_->RemoveObserver(this); | 76 sync_service_->RemoveObserver(this); |
| 83 #endif | |
| 84 } | 77 } |
| 85 | 78 |
| 86 /////////////////////////////////////////////////////////////////////////////// | 79 /////////////////////////////////////////////////////////////////////////////// |
| 87 // ContentPageView, views::ButtonListener implementation: | 80 // ContentPageView, views::ButtonListener implementation: |
| 88 | 81 |
| 89 void ContentPageView::ButtonPressed( | 82 void ContentPageView::ButtonPressed( |
| 90 views::Button* sender, const views::Event& event) { | 83 views::Button* sender, const views::Event& event) { |
| 91 if (sender == passwords_asktosave_radio_ || | 84 if (sender == passwords_asktosave_radio_ || |
| 92 sender == passwords_neversave_radio_) { | 85 sender == passwords_neversave_radio_) { |
| 93 bool enabled = passwords_asktosave_radio_->checked(); | 86 bool enabled = passwords_asktosave_radio_->checked(); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 119 } else if (sender == import_button_) { | 112 } else if (sender == import_button_) { |
| 120 views::Window::CreateChromeWindow( | 113 views::Window::CreateChromeWindow( |
| 121 GetWindow()->GetNativeWindow(), | 114 GetWindow()->GetNativeWindow(), |
| 122 gfx::Rect(), | 115 gfx::Rect(), |
| 123 new ImporterView(profile()))->Show(); | 116 new ImporterView(profile()))->Show(); |
| 124 } else if (sender == clear_data_button_) { | 117 } else if (sender == clear_data_button_) { |
| 125 views::Window::CreateChromeWindow( | 118 views::Window::CreateChromeWindow( |
| 126 GetWindow()->GetNativeWindow(), | 119 GetWindow()->GetNativeWindow(), |
| 127 gfx::Rect(), | 120 gfx::Rect(), |
| 128 new ClearBrowsingDataView(profile()))->Show(); | 121 new ClearBrowsingDataView(profile()))->Show(); |
| 129 #if defined(BROWSER_SYNC) | |
| 130 } else if (sender == sync_start_stop_button_) { | 122 } else if (sender == sync_start_stop_button_) { |
| 131 DCHECK(sync_service_); | 123 DCHECK(sync_service_); |
| 132 | 124 |
| 133 if (sync_service_->HasSyncSetupCompleted()) { | 125 if (sync_service_->HasSyncSetupCompleted()) { |
| 134 ConfirmMessageBoxDialog::RunWithCustomConfiguration( | 126 ConfirmMessageBoxDialog::RunWithCustomConfiguration( |
| 135 GetWindow()->GetNativeWindow(), | 127 GetWindow()->GetNativeWindow(), |
| 136 this, | 128 this, |
| 137 l10n_util::GetString(IDS_SYNC_STOP_SYNCING_EXPLANATION_LABEL), | 129 l10n_util::GetString(IDS_SYNC_STOP_SYNCING_EXPLANATION_LABEL), |
| 138 l10n_util::GetString(IDS_SYNC_STOP_SYNCING_BUTTON_LABEL), | 130 l10n_util::GetString(IDS_SYNC_STOP_SYNCING_BUTTON_LABEL), |
| 139 l10n_util::GetString(IDS_SYNC_STOP_SYNCING_CONFIRM_BUTTON_LABEL), | 131 l10n_util::GetString(IDS_SYNC_STOP_SYNCING_CONFIRM_BUTTON_LABEL), |
| 140 l10n_util::GetString(IDS_CANCEL), | 132 l10n_util::GetString(IDS_CANCEL), |
| 141 gfx::Size(views::Window::GetLocalizedContentsSize( | 133 gfx::Size(views::Window::GetLocalizedContentsSize( |
| 142 IDS_CONFIRM_STOP_SYNCING_DIALOG_WIDTH_CHARS, | 134 IDS_CONFIRM_STOP_SYNCING_DIALOG_WIDTH_CHARS, |
| 143 IDS_CONFIRM_STOP_SYNCING_DIALOG_HEIGHT_LINES))); | 135 IDS_CONFIRM_STOP_SYNCING_DIALOG_HEIGHT_LINES))); |
| 144 return; | 136 return; |
| 145 } else { | 137 } else { |
| 146 sync_service_->EnableForUser(); | 138 sync_service_->EnableForUser(); |
| 147 ProfileSyncService::SyncEvent(ProfileSyncService::START_FROM_OPTIONS); | 139 ProfileSyncService::SyncEvent(ProfileSyncService::START_FROM_OPTIONS); |
| 148 } | 140 } |
| 149 #endif | |
| 150 } | 141 } |
| 151 } | 142 } |
| 152 | 143 |
| 153 void ContentPageView::LinkActivated(views::Link* source, int event_flags) { | 144 void ContentPageView::LinkActivated(views::Link* source, int event_flags) { |
| 154 if (source == themes_gallery_link_) { | 145 if (source == themes_gallery_link_) { |
| 155 UserMetricsRecordAction(L"Options_ThemesGallery", profile()->GetPrefs()); | 146 UserMetricsRecordAction(L"Options_ThemesGallery", profile()->GetPrefs()); |
| 156 Browser* browser = BrowserList::GetLastActive(); | 147 Browser* browser = BrowserList::GetLastActive(); |
| 157 browser->OpenURL(GURL(l10n_util::GetString(IDS_THEMES_GALLERY_URL)), | 148 browser->OpenURL(GURL(l10n_util::GetString(IDS_THEMES_GALLERY_URL)), |
| 158 GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); | 149 GURL(), NEW_FOREGROUND_TAB, PageTransition::LINK); |
| 159 browser->window()->Activate(); | 150 browser->window()->Activate(); |
| 160 return; | 151 return; |
| 161 } | 152 } |
| 162 #if defined(BROWSER_SYNC) | |
| 163 DCHECK_EQ(source, sync_action_link_); | 153 DCHECK_EQ(source, sync_action_link_); |
| 164 DCHECK(sync_service_); | 154 DCHECK(sync_service_); |
| 165 sync_service_->ShowLoginDialog(); | 155 sync_service_->ShowLoginDialog(); |
| 166 #endif | |
| 167 } | 156 } |
| 168 | 157 |
| 169 //////////////////////////////////////////////////////////////////////////////// | 158 //////////////////////////////////////////////////////////////////////////////// |
| 170 // ContentPageView, OptionsPageView implementation: | 159 // ContentPageView, OptionsPageView implementation: |
| 171 | 160 |
| 172 void ContentPageView::InitControlLayout() { | 161 void ContentPageView::InitControlLayout() { |
| 173 using views::GridLayout; | 162 using views::GridLayout; |
| 174 using views::ColumnSet; | 163 using views::ColumnSet; |
| 175 | 164 |
| 176 GridLayout* layout = new GridLayout(this); | 165 GridLayout* layout = new GridLayout(this); |
| 177 layout->SetInsets(5, 5, 5, 5); | 166 layout->SetInsets(5, 5, 5, 5); |
| 178 SetLayoutManager(layout); | 167 SetLayoutManager(layout); |
| 179 | 168 |
| 180 const int single_column_view_set_id = 0; | 169 const int single_column_view_set_id = 0; |
| 181 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id); | 170 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id); |
| 182 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, | 171 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, |
| 183 GridLayout::USE_PREF, 0, 0); | 172 GridLayout::USE_PREF, 0, 0); |
| 184 | 173 |
| 185 #if defined(BROWSER_SYNC) | |
| 186 if (sync_service_) { | 174 if (sync_service_) { |
| 187 layout->StartRow(0, single_column_view_set_id); | 175 layout->StartRow(0, single_column_view_set_id); |
| 188 InitSyncGroup(); | 176 InitSyncGroup(); |
| 189 layout->AddView(sync_group_); | 177 layout->AddView(sync_group_); |
| 190 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 178 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
| 191 } | 179 } |
| 192 #endif | |
| 193 | 180 |
| 194 layout->StartRow(0, single_column_view_set_id); | 181 layout->StartRow(0, single_column_view_set_id); |
| 195 InitPasswordSavingGroup(); | 182 InitPasswordSavingGroup(); |
| 196 layout->AddView(passwords_group_); | 183 layout->AddView(passwords_group_); |
| 197 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 184 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
| 198 | 185 |
| 199 layout->StartRow(0, single_column_view_set_id); | 186 layout->StartRow(0, single_column_view_set_id); |
| 200 InitFormAutofillGroup(); | 187 InitFormAutofillGroup(); |
| 201 layout->AddView(form_autofill_group_); | 188 layout->AddView(form_autofill_group_); |
| 202 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 189 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 if (!pref_name || *pref_name == prefs::kCurrentThemeID) { | 225 if (!pref_name || *pref_name == prefs::kCurrentThemeID) { |
| 239 themes_reset_button_->SetEnabled( | 226 themes_reset_button_->SetEnabled( |
| 240 is_using_default_theme_.GetValue().length() > 0); | 227 is_using_default_theme_.GetValue().length() > 0); |
| 241 } | 228 } |
| 242 } | 229 } |
| 243 | 230 |
| 244 /////////////////////////////////////////////////////////////////////////////// | 231 /////////////////////////////////////////////////////////////////////////////// |
| 245 // ContentsPageView, views::View overrides: | 232 // ContentsPageView, views::View overrides: |
| 246 | 233 |
| 247 void ContentPageView::Layout() { | 234 void ContentPageView::Layout() { |
| 248 #if defined(BROWSER_SYNC) | |
| 249 if (is_initialized()) | 235 if (is_initialized()) |
| 250 UpdateSyncControls(); | 236 UpdateSyncControls(); |
| 251 #endif | |
| 252 // We need to Layout twice - once to get the width of the contents box... | 237 // We need to Layout twice - once to get the width of the contents box... |
| 253 View::Layout(); | 238 View::Layout(); |
| 254 passwords_asktosave_radio_->SetBounds( | 239 passwords_asktosave_radio_->SetBounds( |
| 255 0, 0, passwords_group_->GetContentsWidth(), 0); | 240 0, 0, passwords_group_->GetContentsWidth(), 0); |
| 256 passwords_neversave_radio_->SetBounds( | 241 passwords_neversave_radio_->SetBounds( |
| 257 0, 0, passwords_group_->GetContentsWidth(), 0); | 242 0, 0, passwords_group_->GetContentsWidth(), 0); |
| 258 browsing_data_label_->SetBounds( | 243 browsing_data_label_->SetBounds( |
| 259 0, 0, browsing_data_group_->GetContentsWidth(), 0); | 244 0, 0, browsing_data_group_->GetContentsWidth(), 0); |
| 260 #if defined(BROWSER_SYNC) | |
| 261 if (is_initialized()) { | 245 if (is_initialized()) { |
| 262 sync_status_label_->SetBounds( | 246 sync_status_label_->SetBounds( |
| 263 0, 0, sync_group_->GetContentsWidth(), 0); | 247 0, 0, sync_group_->GetContentsWidth(), 0); |
| 264 } | 248 } |
| 265 #endif | |
| 266 // ... and twice to get the height of multi-line items correct. | 249 // ... and twice to get the height of multi-line items correct. |
| 267 View::Layout(); | 250 View::Layout(); |
| 268 } | 251 } |
| 269 | 252 |
| 270 | 253 |
| 271 /////////////////////////////////////////////////////////////////////////////// | 254 /////////////////////////////////////////////////////////////////////////////// |
| 272 // ContentsPageView, ProfileSyncServiceObserver implementation: | 255 // ContentsPageView, ProfileSyncServiceObserver implementation: |
| 273 #if defined(BROWSER_SYNC) | 256 |
| 274 void ContentPageView::OnStateChanged() { | 257 void ContentPageView::OnStateChanged() { |
| 275 // If the UI controls are not yet initialized, then don't do anything. This | 258 // If the UI controls are not yet initialized, then don't do anything. This |
| 276 // can happen if the Options dialog is up, but the Content tab is not yet | 259 // can happen if the Options dialog is up, but the Content tab is not yet |
| 277 // clicked. | 260 // clicked. |
| 278 if (is_initialized()) | 261 if (is_initialized()) |
| 279 Layout(); | 262 Layout(); |
| 280 } | 263 } |
| 281 #endif | |
| 282 | 264 |
| 283 /////////////////////////////////////////////////////////////////////////////// | 265 /////////////////////////////////////////////////////////////////////////////// |
| 284 // ContentPageView, private: | 266 // ContentPageView, private: |
| 285 | 267 |
| 286 void ContentPageView::InitPasswordSavingGroup() { | 268 void ContentPageView::InitPasswordSavingGroup() { |
| 287 passwords_asktosave_radio_ = new views::RadioButton( | 269 passwords_asktosave_radio_ = new views::RadioButton( |
| 288 l10n_util::GetString(IDS_OPTIONS_PASSWORDS_ASKTOSAVE), | 270 l10n_util::GetString(IDS_OPTIONS_PASSWORDS_ASKTOSAVE), |
| 289 kPasswordSavingRadioGroup); | 271 kPasswordSavingRadioGroup); |
| 290 passwords_asktosave_radio_->set_listener(this); | 272 passwords_asktosave_radio_->set_listener(this); |
| 291 passwords_asktosave_radio_->SetMultiLine(true); | 273 passwords_asktosave_radio_->SetMultiLine(true); |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 432 browsing_data_group_ = new OptionsGroupView( | 414 browsing_data_group_ = new OptionsGroupView( |
| 433 contents, l10n_util::GetString(IDS_OPTIONS_BROWSING_DATA_GROUP_NAME), | 415 contents, l10n_util::GetString(IDS_OPTIONS_BROWSING_DATA_GROUP_NAME), |
| 434 L"", true); | 416 L"", true); |
| 435 } | 417 } |
| 436 | 418 |
| 437 void ContentPageView::OnConfirmMessageAccept() { | 419 void ContentPageView::OnConfirmMessageAccept() { |
| 438 sync_service_->DisableForUser(); | 420 sync_service_->DisableForUser(); |
| 439 ProfileSyncService::SyncEvent(ProfileSyncService::STOP_FROM_OPTIONS); | 421 ProfileSyncService::SyncEvent(ProfileSyncService::STOP_FROM_OPTIONS); |
| 440 } | 422 } |
| 441 | 423 |
| 442 #if defined(BROWSER_SYNC) | |
| 443 void ContentPageView::InitSyncGroup() { | 424 void ContentPageView::InitSyncGroup() { |
| 444 sync_status_label_ = new views::Label; | 425 sync_status_label_ = new views::Label; |
| 445 sync_status_label_->SetMultiLine(true); | 426 sync_status_label_->SetMultiLine(true); |
| 446 sync_status_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); | 427 sync_status_label_->SetHorizontalAlignment(views::Label::ALIGN_LEFT); |
| 447 | 428 |
| 448 sync_action_link_ = new views::Link(); | 429 sync_action_link_ = new views::Link(); |
| 449 sync_action_link_->set_collapse_when_hidden(true); | 430 sync_action_link_->set_collapse_when_hidden(true); |
| 450 sync_action_link_->SetController(this); | 431 sync_action_link_->SetController(this); |
| 451 | 432 |
| 452 sync_start_stop_button_ = new views::NativeButton(this, std::wstring()); | 433 sync_start_stop_button_ = new views::NativeButton(this, std::wstring()); |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 sync_action_link_->SetText(link_label); | 477 sync_action_link_->SetText(link_label); |
| 497 sync_action_link_->SetVisible(!link_label.empty()); | 478 sync_action_link_->SetVisible(!link_label.empty()); |
| 498 if (status_has_error) { | 479 if (status_has_error) { |
| 499 sync_status_label_->set_background(CreateErrorBackground()); | 480 sync_status_label_->set_background(CreateErrorBackground()); |
| 500 sync_action_link_->set_background(CreateErrorBackground()); | 481 sync_action_link_->set_background(CreateErrorBackground()); |
| 501 } else { | 482 } else { |
| 502 sync_status_label_->set_background(NULL); | 483 sync_status_label_->set_background(NULL); |
| 503 sync_action_link_->set_background(NULL); | 484 sync_action_link_->set_background(NULL); |
| 504 } | 485 } |
| 505 } | 486 } |
| 506 | |
| 507 #endif // defined(BROWSER_SYNC) | |
| OLD | NEW |