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

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

Issue 113991: Make Combobox portable (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 6 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 | Annotate | Revision Log
OLDNEW
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/general_page_view.h" 5 #include "chrome/browser/views/options/general_page_view.h"
6 6
7 #include "app/l10n_util.h" 7 #include "app/l10n_util.h"
8 #include "app/resource_bundle.h" 8 #include "app/resource_bundle.h"
9 #include "base/gfx/png_decoder.h" 9 #include "base/gfx/png_decoder.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 364 matching lines...) Expand 10 before | Expand all | Expand 10 after
375 *index = static_cast<int>(i); 375 *index = static_cast<int>(i);
376 return &entries_[i]; 376 return &entries_[i];
377 } 377 }
378 } 378 }
379 return NULL; 379 return NULL;
380 } 380 }
381 381
382 /////////////////////////////////////////////////////////////////////////////// 382 ///////////////////////////////////////////////////////////////////////////////
383 // SearchEngineListModel 383 // SearchEngineListModel
384 384
385 class SearchEngineListModel : public views::ComboBox::Model, 385 class SearchEngineListModel : public views::Combobox::Model,
386 public TemplateURLModelObserver { 386 public TemplateURLModelObserver {
387 public: 387 public:
388 explicit SearchEngineListModel(Profile* profile); 388 explicit SearchEngineListModel(Profile* profile);
389 virtual ~SearchEngineListModel(); 389 virtual ~SearchEngineListModel();
390 390
391 // Sets the ComboBox. SearchEngineListModel needs a handle to the ComboBox 391 // Sets the Combobox. SearchEngineListModel needs a handle to the Combobox
392 // so that when the TemplateURLModel changes the combobox can be updated. 392 // so that when the TemplateURLModel changes the combobox can be updated.
393 void SetComboBox(views::ComboBox* combo_box); 393 void SetCombobox(views::Combobox* combobox);
394 394
395 // views::ComboBox::Model overrides: 395 // views::Combobox::Model overrides:
396 virtual int GetItemCount(views::ComboBox* source); 396 virtual int GetItemCount(views::Combobox* source);
397 virtual std::wstring GetItemAt(views::ComboBox* source, int index); 397 virtual std::wstring GetItemAt(views::Combobox* source, int index);
398 398
399 // Returns the TemplateURL at the specified index. 399 // Returns the TemplateURL at the specified index.
400 const TemplateURL* GetTemplateURLAt(int index); 400 const TemplateURL* GetTemplateURLAt(int index);
401 401
402 TemplateURLModel* model() { return template_url_model_; } 402 TemplateURLModel* model() { return template_url_model_; }
403 403
404 private: 404 private:
405 // TemplateURLModelObserver methods. 405 // TemplateURLModelObserver methods.
406 virtual void OnTemplateURLModelChanged(); 406 virtual void OnTemplateURLModelChanged();
407 407
408 // Recalculates the TemplateURLs to display and notifies the combobox. 408 // Recalculates the TemplateURLs to display and notifies the combobox.
409 void ResetContents(); 409 void ResetContents();
410 410
411 // Resets the selection of the combobox based on the users selected search 411 // Resets the selection of the combobox based on the users selected search
412 // engine. 412 // engine.
413 void ChangeComboBoxSelection(); 413 void ChangeComboboxSelection();
414 414
415 TemplateURLModel* template_url_model_; 415 TemplateURLModel* template_url_model_;
416 416
417 // The combobox hosting us. 417 // The combobox hosting us.
418 views::ComboBox* combo_box_; 418 views::Combobox* combobox_;
419 419
420 // The TemplateURLs we're showing. 420 // The TemplateURLs we're showing.
421 typedef std::vector<const TemplateURL*> TemplateURLs; 421 typedef std::vector<const TemplateURL*> TemplateURLs;
422 TemplateURLs template_urls_; 422 TemplateURLs template_urls_;
423 423
424 DISALLOW_COPY_AND_ASSIGN(SearchEngineListModel); 424 DISALLOW_COPY_AND_ASSIGN(SearchEngineListModel);
425 }; 425 };
426 426
427 SearchEngineListModel::SearchEngineListModel(Profile* profile) 427 SearchEngineListModel::SearchEngineListModel(Profile* profile)
428 : template_url_model_(profile->GetTemplateURLModel()), 428 : template_url_model_(profile->GetTemplateURLModel()),
429 combo_box_(NULL) { 429 combobox_(NULL) {
430 if (template_url_model_) { 430 if (template_url_model_) {
431 template_url_model_->Load(); 431 template_url_model_->Load();
432 template_url_model_->AddObserver(this); 432 template_url_model_->AddObserver(this);
433 } 433 }
434 ResetContents(); 434 ResetContents();
435 } 435 }
436 436
437 SearchEngineListModel::~SearchEngineListModel() { 437 SearchEngineListModel::~SearchEngineListModel() {
438 if (template_url_model_) 438 if (template_url_model_)
439 template_url_model_->RemoveObserver(this); 439 template_url_model_->RemoveObserver(this);
440 } 440 }
441 441
442 void SearchEngineListModel::SetComboBox(views::ComboBox* combo_box) { 442 void SearchEngineListModel::SetCombobox(views::Combobox* combobox) {
443 combo_box_ = combo_box; 443 combobox_ = combobox;
444 if (template_url_model_ && template_url_model_->loaded()) 444 if (template_url_model_ && template_url_model_->loaded())
445 ChangeComboBoxSelection(); 445 ChangeComboboxSelection();
446 else 446 else
447 combo_box_->SetEnabled(false); 447 combobox_->SetEnabled(false);
448 } 448 }
449 449
450 int SearchEngineListModel::GetItemCount(views::ComboBox* source) { 450 int SearchEngineListModel::GetItemCount(views::Combobox* source) {
451 return static_cast<int>(template_urls_.size()); 451 return static_cast<int>(template_urls_.size());
452 } 452 }
453 453
454 std::wstring SearchEngineListModel::GetItemAt(views::ComboBox* source, 454 std::wstring SearchEngineListModel::GetItemAt(views::Combobox* source,
455 int index) { 455 int index) {
456 DCHECK(index < GetItemCount(combo_box_)); 456 DCHECK(index < GetItemCount(combobox_));
457 return template_urls_[index]->short_name(); 457 return template_urls_[index]->short_name();
458 } 458 }
459 459
460 const TemplateURL* SearchEngineListModel::GetTemplateURLAt(int index) { 460 const TemplateURL* SearchEngineListModel::GetTemplateURLAt(int index) {
461 DCHECK(index >= 0 && index < static_cast<int>(template_urls_.size())); 461 DCHECK(index >= 0 && index < static_cast<int>(template_urls_.size()));
462 return template_urls_[static_cast<int>(index)]; 462 return template_urls_[static_cast<int>(index)];
463 } 463 }
464 464
465 void SearchEngineListModel::OnTemplateURLModelChanged() { 465 void SearchEngineListModel::OnTemplateURLModelChanged() {
466 ResetContents(); 466 ResetContents();
467 } 467 }
468 468
469 void SearchEngineListModel::ResetContents() { 469 void SearchEngineListModel::ResetContents() {
470 if (!template_url_model_ || !template_url_model_->loaded()) 470 if (!template_url_model_ || !template_url_model_->loaded())
471 return; 471 return;
472 template_urls_.clear(); 472 template_urls_.clear();
473 TemplateURLs model_urls = template_url_model_->GetTemplateURLs(); 473 TemplateURLs model_urls = template_url_model_->GetTemplateURLs();
474 for (size_t i = 0; i < model_urls.size(); ++i) { 474 for (size_t i = 0; i < model_urls.size(); ++i) {
475 if (model_urls[i]->ShowInDefaultList()) 475 if (model_urls[i]->ShowInDefaultList())
476 template_urls_.push_back(model_urls[i]); 476 template_urls_.push_back(model_urls[i]);
477 } 477 }
478 478
479 if (combo_box_) { 479 if (combobox_) {
480 combo_box_->ModelChanged(); 480 combobox_->ModelChanged();
481 ChangeComboBoxSelection(); 481 ChangeComboboxSelection();
482 } 482 }
483 } 483 }
484 484
485 void SearchEngineListModel::ChangeComboBoxSelection() { 485 void SearchEngineListModel::ChangeComboboxSelection() {
486 if (template_urls_.size()) { 486 if (template_urls_.size()) {
487 combo_box_->SetEnabled(true); 487 combobox_->SetEnabled(true);
488 488
489 const TemplateURL* default_search_provider = 489 const TemplateURL* default_search_provider =
490 template_url_model_->GetDefaultSearchProvider(); 490 template_url_model_->GetDefaultSearchProvider();
491 if (default_search_provider) { 491 if (default_search_provider) {
492 TemplateURLs::iterator i = 492 TemplateURLs::iterator i =
493 find(template_urls_.begin(), template_urls_.end(), 493 find(template_urls_.begin(), template_urls_.end(),
494 default_search_provider); 494 default_search_provider);
495 if (i != template_urls_.end()) { 495 if (i != template_urls_.end()) {
496 combo_box_->SetSelectedItem( 496 combobox_->SetSelectedItem(
497 static_cast<int>(i - template_urls_.begin())); 497 static_cast<int>(i - template_urls_.begin()));
498 } 498 }
499 } 499 }
500 } else { 500 } else {
501 combo_box_->SetEnabled(false); 501 combobox_->SetEnabled(false);
502 } 502 }
503 } 503 }
504 504
505 /////////////////////////////////////////////////////////////////////////////// 505 ///////////////////////////////////////////////////////////////////////////////
506 // GeneralPageView, public: 506 // GeneralPageView, public:
507 507
508 GeneralPageView::GeneralPageView(Profile* profile) 508 GeneralPageView::GeneralPageView(Profile* profile)
509 : startup_group_(NULL), 509 : startup_group_(NULL),
510 startup_homepage_radio_(NULL), 510 startup_homepage_radio_(NULL),
511 startup_last_session_radio_(NULL), 511 startup_last_session_radio_(NULL),
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
588 // If the user made Chrome the default browser, then he/she arguably wants 588 // If the user made Chrome the default browser, then he/she arguably wants
589 // to be notified when that changes. 589 // to be notified when that changes.
590 profile()->GetPrefs()->SetBoolean(prefs::kCheckDefaultBrowser, true); 590 profile()->GetPrefs()->SetBoolean(prefs::kCheckDefaultBrowser, true);
591 } else if (sender == default_search_manage_engines_button_) { 591 } else if (sender == default_search_manage_engines_button_) {
592 UserMetricsRecordAction(L"Options_ManageSearchEngines", NULL); 592 UserMetricsRecordAction(L"Options_ManageSearchEngines", NULL);
593 KeywordEditorView::Show(profile()); 593 KeywordEditorView::Show(profile());
594 } 594 }
595 } 595 }
596 596
597 /////////////////////////////////////////////////////////////////////////////// 597 ///////////////////////////////////////////////////////////////////////////////
598 // GeneralPageView, views::ComboBox::Listener implementation: 598 // GeneralPageView, views::Combobox::Listener implementation:
599 599
600 void GeneralPageView::ItemChanged(views::ComboBox* combo_box, 600 void GeneralPageView::ItemChanged(views::Combobox* combobox,
601 int prev_index, int new_index) { 601 int prev_index, int new_index) {
602 if (combo_box == default_search_engine_combobox_) { 602 if (combobox == default_search_engine_combobox_) {
603 SetDefaultSearchProvider(); 603 SetDefaultSearchProvider();
604 UserMetricsRecordAction(L"Options_SearchEngineChanged", NULL); 604 UserMetricsRecordAction(L"Options_SearchEngineChanged", NULL);
605 } 605 }
606 } 606 }
607 607
608 /////////////////////////////////////////////////////////////////////////////// 608 ///////////////////////////////////////////////////////////////////////////////
609 // GeneralPageView, views::Textfield::Controller implementation: 609 // GeneralPageView, views::Textfield::Controller implementation:
610 610
611 void GeneralPageView::ContentsChanged(views::Textfield* sender, 611 void GeneralPageView::ContentsChanged(views::Textfield* sender,
612 const std::wstring& new_contents) { 612 const std::wstring& new_contents) {
(...skipping 300 matching lines...) Expand 10 before | Expand all | Expand 10 after
913 913
914 homepage_group_ = new OptionsGroupView( 914 homepage_group_ = new OptionsGroupView(
915 contents, l10n_util::GetString(IDS_OPTIONS_HOMEPAGE_GROUP_NAME), 915 contents, l10n_util::GetString(IDS_OPTIONS_HOMEPAGE_GROUP_NAME),
916 EmptyWString(), true); 916 EmptyWString(), true);
917 } 917 }
918 918
919 919
920 void GeneralPageView::InitDefaultSearchGroup() { 920 void GeneralPageView::InitDefaultSearchGroup() {
921 default_search_engines_model_.reset(new SearchEngineListModel(profile())); 921 default_search_engines_model_.reset(new SearchEngineListModel(profile()));
922 default_search_engine_combobox_ = 922 default_search_engine_combobox_ =
923 new views::ComboBox(default_search_engines_model_.get()); 923 new views::Combobox(default_search_engines_model_.get());
924 default_search_engines_model_->SetComboBox(default_search_engine_combobox_); 924 default_search_engines_model_->SetCombobox(default_search_engine_combobox_);
925 default_search_engine_combobox_->SetListener(this); 925 default_search_engine_combobox_->set_listener(this);
926 926
927 default_search_manage_engines_button_ = new views::NativeButton( 927 default_search_manage_engines_button_ = new views::NativeButton(
928 this, 928 this,
929 l10n_util::GetString(IDS_OPTIONS_DEFAULTSEARCH_MANAGE_ENGINES_LINK)); 929 l10n_util::GetString(IDS_OPTIONS_DEFAULTSEARCH_MANAGE_ENGINES_LINK));
930 930
931 using views::GridLayout; 931 using views::GridLayout;
932 using views::ColumnSet; 932 using views::ColumnSet;
933 933
934 views::View* contents = new views::View; 934 views::View* contents = new views::View;
935 GridLayout* layout = new GridLayout(contents); 935 GridLayout* layout = new GridLayout(contents);
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after
1080 if (enabled) { 1080 if (enabled) {
1081 homepage_use_url_textfield_->SetEnabled(true); 1081 homepage_use_url_textfield_->SetEnabled(true);
1082 homepage_use_url_textfield_->SetReadOnly(false); 1082 homepage_use_url_textfield_->SetReadOnly(false);
1083 } else { 1083 } else {
1084 homepage_use_url_textfield_->SetEnabled(false); 1084 homepage_use_url_textfield_->SetEnabled(false);
1085 homepage_use_url_textfield_->SetReadOnly(true); 1085 homepage_use_url_textfield_->SetReadOnly(true);
1086 } 1086 }
1087 } 1087 }
1088 1088
1089 void GeneralPageView::SetDefaultSearchProvider() { 1089 void GeneralPageView::SetDefaultSearchProvider() {
1090 const int index = default_search_engine_combobox_->GetSelectedItem(); 1090 const int index = default_search_engine_combobox_->selected_item();
1091 default_search_engines_model_->model()->SetDefaultSearchProvider( 1091 default_search_engines_model_->model()->SetDefaultSearchProvider(
1092 default_search_engines_model_->GetTemplateURLAt(index)); 1092 default_search_engines_model_->GetTemplateURLAt(index));
1093 } 1093 }
OLDNEW
« no previous file with comments | « chrome/browser/views/options/general_page_view.h ('k') | chrome/browser/views/options/language_combobox_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698