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

Side by Side Diff: chrome/browser/views/options/general_page_view.cc

Issue 2812026: Auto-size the views version of the options dialog. (Closed)
Patch Set: Fix autosizing issue with gtk pref pages in chromeos options dialog. Created 10 years, 5 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 unified diff | Download patch
OLDNEW
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « chrome/browser/views/options/general_page_view.h ('k') | chrome/browser/views/options/options_window_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698