OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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/general_page_view.h" | 5 #include "chrome/browser/views/options/general_page_view.h" |
6 | 6 |
7 #include "app/combobox_model.h" | 7 #include "app/combobox_model.h" |
8 #include "app/l10n_util.h" | 8 #include "app/l10n_util.h" |
9 #include "base/callback.h" | 9 #include "base/callback.h" |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 #include "grit/generated_resources.h" | 28 #include "grit/generated_resources.h" |
29 #include "views/controls/button/radio_button.h" | 29 #include "views/controls/button/radio_button.h" |
30 #include "views/controls/label.h" | 30 #include "views/controls/label.h" |
31 #include "views/controls/table/table_view.h" | 31 #include "views/controls/table/table_view.h" |
32 #include "views/controls/textfield/textfield.h" | 32 #include "views/controls/textfield/textfield.h" |
33 #include "views/grid_layout.h" | 33 #include "views/grid_layout.h" |
34 #include "views/standard_layout.h" | 34 #include "views/standard_layout.h" |
35 | 35 |
36 namespace { | 36 namespace { |
37 | 37 |
38 const int kStartupRadioGroup = 1; | 38 // All the options pages are in the same view hierarchy. This means we need to |
39 const int kHomePageRadioGroup = 2; | 39 // make sure group identifiers don't collide across different pages. |
| 40 const int kStartupRadioGroup = 101; |
| 41 const int kHomePageRadioGroup = 102; |
40 const SkColor kDefaultBrowserLabelColor = SkColorSetRGB(0, 135, 0); | 42 const SkColor kDefaultBrowserLabelColor = SkColorSetRGB(0, 135, 0); |
41 const SkColor kNotDefaultBrowserLabelColor = SkColorSetRGB(135, 0, 0); | 43 const SkColor kNotDefaultBrowserLabelColor = SkColorSetRGB(135, 0, 0); |
| 44 const int kHomePageTextfieldWidthChars = 40; |
42 | 45 |
43 } // namespace | 46 } // namespace |
44 | 47 |
45 /////////////////////////////////////////////////////////////////////////////// | 48 /////////////////////////////////////////////////////////////////////////////// |
46 // SearchEngineListModel | 49 // SearchEngineListModel |
47 | 50 |
48 class SearchEngineListModel : public ComboboxModel, | 51 class SearchEngineListModel : public ComboboxModel, |
49 public TemplateURLModelObserver { | 52 public TemplateURLModelObserver { |
50 public: | 53 public: |
51 explicit SearchEngineListModel(Profile* profile); | 54 explicit SearchEngineListModel(Profile* profile); |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
395 show_home_button_.GetValue()); | 398 show_home_button_.GetValue()); |
396 } | 399 } |
397 } | 400 } |
398 | 401 |
399 void GeneralPageView::HighlightGroup(OptionsGroup highlight_group) { | 402 void GeneralPageView::HighlightGroup(OptionsGroup highlight_group) { |
400 if (highlight_group == OPTIONS_GROUP_DEFAULT_SEARCH) | 403 if (highlight_group == OPTIONS_GROUP_DEFAULT_SEARCH) |
401 default_search_group_->SetHighlighted(true); | 404 default_search_group_->SetHighlighted(true); |
402 } | 405 } |
403 | 406 |
404 /////////////////////////////////////////////////////////////////////////////// | 407 /////////////////////////////////////////////////////////////////////////////// |
405 // GeneralPageView, views::View overrides: | |
406 | |
407 void GeneralPageView::Layout() { | |
408 // We need to Layout twice - once to get the width of the contents box... | |
409 View::Layout(); | |
410 startup_last_session_radio_->SetBounds( | |
411 0, 0, startup_group_->GetContentsWidth(), 0); | |
412 homepage_use_newtab_radio_->SetBounds( | |
413 0, 0, homepage_group_->GetContentsWidth(), 0); | |
414 homepage_show_home_button_checkbox_->SetBounds( | |
415 0, 0, homepage_group_->GetContentsWidth(), 0); | |
416 default_browser_status_label_->SetBounds( | |
417 0, 0, default_browser_group_->GetContentsWidth(), 0); | |
418 // ... and twice to get the height of multi-line items correct. | |
419 View::Layout(); | |
420 } | |
421 | |
422 /////////////////////////////////////////////////////////////////////////////// | |
423 // GeneralPageView, private: | 408 // GeneralPageView, private: |
424 | 409 |
425 void GeneralPageView::SetDefaultBrowserUIState( | 410 void GeneralPageView::SetDefaultBrowserUIState( |
426 ShellIntegration::DefaultBrowserUIState state) { | 411 ShellIntegration::DefaultBrowserUIState state) { |
427 bool button_enabled = state == ShellIntegration::STATE_NOT_DEFAULT; | 412 bool button_enabled = state == ShellIntegration::STATE_NOT_DEFAULT; |
428 default_browser_use_as_default_button_->SetEnabled(button_enabled); | 413 default_browser_use_as_default_button_->SetEnabled(button_enabled); |
429 default_browser_use_as_default_button_->SetNeedElevation(true); | 414 default_browser_use_as_default_button_->SetNeedElevation(true); |
430 if (state == ShellIntegration::STATE_IS_DEFAULT) { | 415 if (state == ShellIntegration::STATE_IS_DEFAULT) { |
431 default_browser_status_label_->SetText( | 416 default_browser_status_label_->SetText( |
432 l10n_util::GetStringF(IDS_OPTIONS_DEFAULTBROWSER_DEFAULT, | 417 l10n_util::GetStringF(IDS_OPTIONS_DEFAULTBROWSER_DEFAULT, |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
505 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, | 490 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, |
506 GridLayout::USE_PREF, 0, 0); | 491 GridLayout::USE_PREF, 0, 0); |
507 column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing); | 492 column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing); |
508 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 0, | 493 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 0, |
509 GridLayout::USE_PREF, 0, 0); | 494 GridLayout::USE_PREF, 0, 0); |
510 | 495 |
511 layout->StartRow(0, single_column_view_set_id); | 496 layout->StartRow(0, single_column_view_set_id); |
512 layout->AddView(startup_homepage_radio_); | 497 layout->AddView(startup_homepage_radio_); |
513 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 498 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
514 layout->StartRow(0, single_column_view_set_id); | 499 layout->StartRow(0, single_column_view_set_id); |
515 layout->AddView(startup_last_session_radio_); | 500 layout->AddView(startup_last_session_radio_, 1, 1, |
| 501 GridLayout::FILL, GridLayout::LEADING); |
516 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 502 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
517 layout->StartRow(0, single_column_view_set_id); | 503 layout->StartRow(0, single_column_view_set_id); |
518 layout->AddView(startup_custom_radio_); | 504 layout->AddView(startup_custom_radio_); |
519 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 505 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
520 | 506 |
521 layout->StartRow(0, double_column_view_set_id); | 507 layout->StartRow(0, double_column_view_set_id); |
522 layout->AddView(startup_custom_pages_table_); | 508 layout->AddView(startup_custom_pages_table_, 1, 1, |
| 509 GridLayout::FILL, GridLayout::FILL); |
523 | 510 |
524 views::View* button_stack = new views::View; | 511 views::View* button_stack = new views::View; |
525 GridLayout* button_stack_layout = new GridLayout(button_stack); | 512 GridLayout* button_stack_layout = new GridLayout(button_stack); |
526 button_stack->SetLayoutManager(button_stack_layout); | 513 button_stack->SetLayoutManager(button_stack_layout); |
527 | 514 |
528 column_set = button_stack_layout->AddColumnSet(single_column_view_set_id); | 515 column_set = button_stack_layout->AddColumnSet(single_column_view_set_id); |
529 column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 1, | 516 column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 1, |
530 GridLayout::USE_PREF, 0, 0); | 517 GridLayout::USE_PREF, 0, 0); |
531 button_stack_layout->StartRow(0, single_column_view_set_id); | 518 button_stack_layout->StartRow(0, single_column_view_set_id); |
532 button_stack_layout->AddView(startup_add_custom_page_button_, | 519 button_stack_layout->AddView(startup_add_custom_page_button_, |
(...skipping 18 matching lines...) Expand all Loading... |
551 l10n_util::GetString(IDS_OPTIONS_HOMEPAGE_USE_NEWTAB), | 538 l10n_util::GetString(IDS_OPTIONS_HOMEPAGE_USE_NEWTAB), |
552 kHomePageRadioGroup); | 539 kHomePageRadioGroup); |
553 homepage_use_newtab_radio_->set_listener(this); | 540 homepage_use_newtab_radio_->set_listener(this); |
554 homepage_use_newtab_radio_->SetMultiLine(true); | 541 homepage_use_newtab_radio_->SetMultiLine(true); |
555 homepage_use_url_radio_ = new views::RadioButton( | 542 homepage_use_url_radio_ = new views::RadioButton( |
556 l10n_util::GetString(IDS_OPTIONS_HOMEPAGE_USE_URL), | 543 l10n_util::GetString(IDS_OPTIONS_HOMEPAGE_USE_URL), |
557 kHomePageRadioGroup); | 544 kHomePageRadioGroup); |
558 homepage_use_url_radio_->set_listener(this); | 545 homepage_use_url_radio_->set_listener(this); |
559 homepage_use_url_textfield_ = new views::Textfield; | 546 homepage_use_url_textfield_ = new views::Textfield; |
560 homepage_use_url_textfield_->SetController(this); | 547 homepage_use_url_textfield_->SetController(this); |
| 548 homepage_use_url_textfield_->set_default_width_in_chars( |
| 549 kHomePageTextfieldWidthChars); |
561 homepage_show_home_button_checkbox_ = new views::Checkbox( | 550 homepage_show_home_button_checkbox_ = new views::Checkbox( |
562 l10n_util::GetString(IDS_OPTIONS_HOMEPAGE_SHOW_BUTTON)); | 551 l10n_util::GetString(IDS_OPTIONS_HOMEPAGE_SHOW_BUTTON)); |
563 homepage_show_home_button_checkbox_->set_listener(this); | 552 homepage_show_home_button_checkbox_->set_listener(this); |
564 homepage_show_home_button_checkbox_->SetMultiLine(true); | 553 homepage_show_home_button_checkbox_->SetMultiLine(true); |
565 | 554 |
566 using views::GridLayout; | 555 using views::GridLayout; |
567 using views::ColumnSet; | 556 using views::ColumnSet; |
568 | 557 |
569 views::View* contents = new views::View; | 558 views::View* contents = new views::View; |
570 GridLayout* layout = new GridLayout(contents); | 559 GridLayout* layout = new GridLayout(contents); |
571 contents->SetLayoutManager(layout); | 560 contents->SetLayoutManager(layout); |
572 | 561 |
573 const int single_column_view_set_id = 0; | 562 const int single_column_view_set_id = 0; |
574 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id); | 563 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id); |
575 column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 1, | 564 column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 1, |
576 GridLayout::USE_PREF, 0, 0); | 565 GridLayout::USE_PREF, 0, 0); |
577 | 566 |
578 const int double_column_view_set_id = 1; | 567 const int double_column_view_set_id = 1; |
579 column_set = layout->AddColumnSet(double_column_view_set_id); | 568 column_set = layout->AddColumnSet(double_column_view_set_id); |
580 column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0, | 569 column_set->AddColumn(GridLayout::FILL, GridLayout::CENTER, 0, |
581 GridLayout::USE_PREF, 0, 0); | 570 GridLayout::USE_PREF, 0, 0); |
582 column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing); | 571 column_set->AddPaddingColumn(0, kRelatedControlHorizontalSpacing); |
583 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, | 572 column_set->AddColumn(GridLayout::FILL, GridLayout::FILL, 1, |
584 GridLayout::USE_PREF, 0, 0); | 573 GridLayout::USE_PREF, 0, 0); |
585 | 574 |
586 layout->StartRow(0, single_column_view_set_id); | 575 layout->StartRow(0, single_column_view_set_id); |
587 layout->AddView(homepage_use_newtab_radio_); | 576 layout->AddView(homepage_use_newtab_radio_, 1, 1, |
| 577 GridLayout::FILL, GridLayout::LEADING); |
588 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 578 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
589 layout->StartRow(0, double_column_view_set_id); | 579 layout->StartRow(0, double_column_view_set_id); |
590 layout->AddView(homepage_use_url_radio_); | 580 layout->AddView(homepage_use_url_radio_); |
591 layout->AddView(homepage_use_url_textfield_); | 581 layout->AddView(homepage_use_url_textfield_); |
592 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 582 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
593 layout->StartRow(0, single_column_view_set_id); | 583 layout->StartRow(0, single_column_view_set_id); |
594 layout->AddView(homepage_show_home_button_checkbox_); | 584 layout->AddView(homepage_show_home_button_checkbox_, 1, 1, |
| 585 GridLayout::FILL, GridLayout::LEADING); |
595 | 586 |
596 homepage_group_ = new OptionsGroupView( | 587 homepage_group_ = new OptionsGroupView( |
597 contents, l10n_util::GetString(IDS_OPTIONS_HOMEPAGE_GROUP_NAME), | 588 contents, l10n_util::GetString(IDS_OPTIONS_HOMEPAGE_GROUP_NAME), |
598 std::wstring(), true); | 589 std::wstring(), true); |
599 } | 590 } |
600 | 591 |
601 | 592 |
602 void GeneralPageView::InitDefaultSearchGroup() { | 593 void GeneralPageView::InitDefaultSearchGroup() { |
603 default_search_engines_model_.reset(new SearchEngineListModel(profile())); | 594 default_search_engines_model_.reset(new SearchEngineListModel(profile())); |
604 default_search_engine_combobox_ = | 595 default_search_engine_combobox_ = |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
650 views::View* contents = new views::View; | 641 views::View* contents = new views::View; |
651 GridLayout* layout = new GridLayout(contents); | 642 GridLayout* layout = new GridLayout(contents); |
652 contents->SetLayoutManager(layout); | 643 contents->SetLayoutManager(layout); |
653 | 644 |
654 const int single_column_view_set_id = 0; | 645 const int single_column_view_set_id = 0; |
655 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id); | 646 ColumnSet* column_set = layout->AddColumnSet(single_column_view_set_id); |
656 column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 1, | 647 column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 1, |
657 GridLayout::USE_PREF, 0, 0); | 648 GridLayout::USE_PREF, 0, 0); |
658 | 649 |
659 layout->StartRow(0, single_column_view_set_id); | 650 layout->StartRow(0, single_column_view_set_id); |
660 layout->AddView(default_browser_status_label_); | 651 layout->AddView(default_browser_status_label_, 1, 1, |
| 652 GridLayout::FILL, GridLayout::LEADING); |
661 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); | 653 layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); |
662 layout->StartRow(0, single_column_view_set_id); | 654 layout->StartRow(0, single_column_view_set_id); |
663 layout->AddView(default_browser_use_as_default_button_); | 655 layout->AddView(default_browser_use_as_default_button_); |
664 | 656 |
665 default_browser_group_ = new OptionsGroupView( | 657 default_browser_group_ = new OptionsGroupView( |
666 contents, l10n_util::GetString(IDS_OPTIONS_DEFAULTBROWSER_GROUP_NAME), | 658 contents, l10n_util::GetString(IDS_OPTIONS_DEFAULTBROWSER_GROUP_NAME), |
667 std::wstring(), false); | 659 std::wstring(), false); |
668 | 660 |
669 if (BrowserDistribution::GetDistribution()->CanSetAsDefault()) | 661 if (BrowserDistribution::GetDistribution()->CanSetAsDefault()) |
670 default_browser_worker_->StartCheckDefaultBrowser(); | 662 default_browser_worker_->StartCheckDefaultBrowser(); |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
770 homepage_use_url_textfield_->SetEnabled(false); | 762 homepage_use_url_textfield_->SetEnabled(false); |
771 homepage_use_url_textfield_->SetReadOnly(true); | 763 homepage_use_url_textfield_->SetReadOnly(true); |
772 } | 764 } |
773 } | 765 } |
774 | 766 |
775 void GeneralPageView::SetDefaultSearchProvider() { | 767 void GeneralPageView::SetDefaultSearchProvider() { |
776 const int index = default_search_engine_combobox_->selected_item(); | 768 const int index = default_search_engine_combobox_->selected_item(); |
777 default_search_engines_model_->model()->SetDefaultSearchProvider( | 769 default_search_engines_model_->model()->SetDefaultSearchProvider( |
778 default_search_engines_model_->GetTemplateURLAt(index)); | 770 default_search_engines_model_->GetTemplateURLAt(index)); |
779 } | 771 } |
OLD | NEW |