diff options
author | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-18 01:04:45 +0000 |
---|---|---|
committer | mattm@chromium.org <mattm@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-08-18 01:04:45 +0000 |
commit | 733436966716d5307a251c2852931531edc9b963 (patch) | |
tree | 14f7a5d2538bb4a70852f5a3e0a6a8e0e94c1b43 | |
parent | 489d946c2d39713777826de69d02546c8307e54e (diff) | |
download | chromium_src-733436966716d5307a251c2852931531edc9b963.zip chromium_src-733436966716d5307a251c2852931531edc9b963.tar.gz chromium_src-733436966716d5307a251c2852931531edc9b963.tar.bz2 |
Factor out views::Combobox::Model so that it can be used cross-platform.
This removes the Combobox* source arg from the Model methods, which wasn't really used by anything.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/165514
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@23603 0039d316-1c4b-4281-b951-d872f2087c98
22 files changed, 106 insertions, 91 deletions
diff --git a/app/app.gyp b/app/app.gyp index 0a36bd5..902efde 100644 --- a/app/app.gyp +++ b/app/app.gyp @@ -63,6 +63,7 @@ 'app_paths.cc', 'app_switches.h', 'app_switches.cc', + 'combobox_model.h', 'drag_drop_types_gtk.cc', 'drag_drop_types_win.cc', 'drag_drop_types.h', diff --git a/app/combobox_model.h b/app/combobox_model.h new file mode 100644 index 0000000..680f1e8 --- /dev/null +++ b/app/combobox_model.h @@ -0,0 +1,20 @@ +// Copyright (c) 2009 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. + +#ifndef APP_COMBOBOX_MODEL_H_ +#define APP_COMBOBOX_MODEL_H_ + +// The interface for models backing a combobox. +class ComboboxModel { + public: + virtual ~ComboboxModel() {} + + // Return the number of items in the combo box. + virtual int GetItemCount() = 0; + + // Return the string that should be used to represent a given item. + virtual std::wstring GetItemAt(int index) = 0; +}; + +#endif // APP_COMBOBOX_MODEL_H_ diff --git a/chrome/browser/views/bookmark_bubble_view.cc b/chrome/browser/views/bookmark_bubble_view.cc index ba101f1a..8a21fe3 100644 --- a/chrome/browser/views/bookmark_bubble_view.cc +++ b/chrome/browser/views/bookmark_bubble_view.cc @@ -105,13 +105,12 @@ BookmarkBubbleView::RecentlyUsedFoldersModel::RecentlyUsedFoldersModel( find(nodes_.begin(), nodes_.end(), node->GetParent()) - nodes_.begin()); } -int BookmarkBubbleView::RecentlyUsedFoldersModel::GetItemCount( - Combobox* source) { +int BookmarkBubbleView::RecentlyUsedFoldersModel::GetItemCount() { return static_cast<int>(nodes_.size() + 1); } std::wstring BookmarkBubbleView::RecentlyUsedFoldersModel::GetItemAt( - Combobox* source, int index) { + int index) { if (index == nodes_.size()) return l10n_util::GetString(IDS_BOOMARK_BUBBLE_CHOOSER_ANOTHER_FOLDER); return nodes_[index]->GetTitle(); @@ -336,7 +335,7 @@ void BookmarkBubbleView::LinkActivated(Link* source, int event_flags) { void BookmarkBubbleView::ItemChanged(Combobox* combobox, int prev_index, int new_index) { - if (new_index + 1 == parent_model_.GetItemCount(parent_combobox_)) { + if (new_index + 1 == parent_model_.GetItemCount()) { UserMetrics::RecordAction(L"BookmarkBubble_EditFromCombobox", profile_); ShowEditor(); @@ -417,7 +416,7 @@ void BookmarkBubbleView::ApplyEdits() { } // Last index means 'Choose another folder...' if (parent_combobox_->selected_item() < - parent_model_.GetItemCount(parent_combobox_) - 1) { + parent_model_.GetItemCount() - 1) { const BookmarkNode* new_parent = parent_model_.GetNodeAt(parent_combobox_->selected_item()); if (new_parent != node->GetParent()) { diff --git a/chrome/browser/views/bookmark_bubble_view.h b/chrome/browser/views/bookmark_bubble_view.h index 517aea9..ebcc445 100644 --- a/chrome/browser/views/bookmark_bubble_view.h +++ b/chrome/browser/views/bookmark_bubble_view.h @@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_VIEWS_BOOKMARK_BUBBLE_VIEW_H_ #define CHROME_BROWSER_VIEWS_BOOKMARK_BUBBLE_VIEW_H_ +#include "app/combobox_model.h" #include "base/gfx/rect.h" #include "chrome/browser/views/info_bubble.h" #include "googleurl/src/gurl.h" @@ -60,13 +61,13 @@ class BookmarkBubbleView : public views::View, // Model for the combobox showing the list of folders to choose from. The // list always contains the bookmark bar, other node and parent. The list // also contains an extra item that shows the text 'Choose another folder...'. - class RecentlyUsedFoldersModel : public views::Combobox::Model { + class RecentlyUsedFoldersModel : public ComboboxModel { public: RecentlyUsedFoldersModel(BookmarkModel* bb_model, const BookmarkNode* node); // Combobox::Model methods. Call through to nodes_. - virtual int GetItemCount(views::Combobox* source); - virtual std::wstring GetItemAt(views::Combobox* source, int index); + virtual int GetItemCount(); + virtual std::wstring GetItemAt(int index); // Returns the node at the specified index. const BookmarkNode* GetNodeAt(int index); diff --git a/chrome/browser/views/bug_report_view.cc b/chrome/browser/views/bug_report_view.cc index 109ecd5..f48572d 100644 --- a/chrome/browser/views/bug_report_view.cc +++ b/chrome/browser/views/bug_report_view.cc @@ -4,6 +4,7 @@ #include "chrome/browser/views/bug_report_view.h" +#include "app/combobox_model.h" #include "app/l10n_util.h" #include "app/win_util.h" #include "base/file_version_info.h" @@ -42,7 +43,7 @@ static const int kDescriptionLines = 5; static const char kReportPhishingUrl[] = "http://www.google.com/safebrowsing/report_phish/"; -class BugReportComboBoxModel : public views::Combobox::Model { +class BugReportComboBoxModel : public ComboboxModel { public: BugReportComboBoxModel() {} @@ -57,12 +58,12 @@ class BugReportComboBoxModel : public views::Combobox::Model { OTHER_PROBLEM }; - // views::Combobox::Model interface. - virtual int GetItemCount(views::Combobox* source) { + // ComboboxModel interface. + virtual int GetItemCount() { return OTHER_PROBLEM + 1; } - virtual std::wstring GetItemAt(views::Combobox* source, int index) { + virtual std::wstring GetItemAt(int index) { return GetItemAtIndex(index); } diff --git a/chrome/browser/views/clear_browsing_data.cc b/chrome/browser/views/clear_browsing_data.cc index 9b8cf76..ba6417a 100644 --- a/chrome/browser/views/clear_browsing_data.cc +++ b/chrome/browser/views/clear_browsing_data.cc @@ -310,16 +310,13 @@ views::View* ClearBrowsingDataView::GetContentsView() { } //////////////////////////////////////////////////////////////////////////////// -// ClearBrowsingDataView, views::Combobox::Model implementation: +// ClearBrowsingDataView, ComboboxModel implementation: -int ClearBrowsingDataView::GetItemCount(views::Combobox* source) { - DCHECK(source == time_period_combobox_); +int ClearBrowsingDataView::GetItemCount() { return 4; } -std::wstring ClearBrowsingDataView::GetItemAt(views::Combobox* source, - int index) { - DCHECK(source == time_period_combobox_); +std::wstring ClearBrowsingDataView::GetItemAt(int index) { switch (index) { case 0: return l10n_util::GetString(IDS_CLEAR_DATA_DAY); case 1: return l10n_util::GetString(IDS_CLEAR_DATA_WEEK); diff --git a/chrome/browser/views/clear_browsing_data.h b/chrome/browser/views/clear_browsing_data.h index cb84d08..f7b1743 100644 --- a/chrome/browser/views/clear_browsing_data.h +++ b/chrome/browser/views/clear_browsing_data.h @@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_VIEWS_CLEAR_BROWSING_DATA_H_ #define CHROME_BROWSER_VIEWS_CLEAR_BROWSING_DATA_H_ +#include "app/combobox_model.h" #include "chrome/browser/browsing_data_remover.h" #include "views/controls/button/button.h" #include "views/controls/combobox/combobox.h" @@ -32,7 +33,7 @@ class MessageLoop; class ClearBrowsingDataView : public views::View, public views::DialogDelegate, public views::ButtonListener, - public views::Combobox::Model, + public ComboboxModel, public views::Combobox::Listener, public BrowsingDataRemover::Observer { public: @@ -63,9 +64,9 @@ class ClearBrowsingDataView : public views::View, virtual bool Accept(); virtual views::View* GetContentsView(); - // Overridden from views::Combobox::Model: - virtual int GetItemCount(views::Combobox* source); - virtual std::wstring GetItemAt(views::Combobox* source, int index); + // Overridden from ComboboxModel: + virtual int GetItemCount(); + virtual std::wstring GetItemAt(int index); // Overridden from views::Combobox::Listener: virtual void ItemChanged(views::Combobox* sender, int prev_index, diff --git a/chrome/browser/views/first_run_customize_view.cc b/chrome/browser/views/first_run_customize_view.cc index f93d7a7..5ae339b 100644 --- a/chrome/browser/views/first_run_customize_view.cc +++ b/chrome/browser/views/first_run_customize_view.cc @@ -163,12 +163,11 @@ void FirstRunCustomizeView::ButtonPressed(views::Button* sender) { } } -int FirstRunCustomizeView::GetItemCount(views::Combobox* source) { +int FirstRunCustomizeView::GetItemCount() { return importer_host_->GetAvailableProfileCount(); } -std::wstring FirstRunCustomizeView::GetItemAt(views::Combobox* source, - int index) { +std::wstring FirstRunCustomizeView::GetItemAt(int index) { return importer_host_->GetSourceProfileNameAt(index); } diff --git a/chrome/browser/views/first_run_customize_view.h b/chrome/browser/views/first_run_customize_view.h index 990bf27..1dcf1a0 100644 --- a/chrome/browser/views/first_run_customize_view.h +++ b/chrome/browser/views/first_run_customize_view.h @@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_VIEWS_FIRST_RUN_CUSTOMIZE_VIEW_H_ #define CHROME_BROWSER_VIEWS_FIRST_RUN_CUSTOMIZE_VIEW_H_ +#include "app/combobox_model.h" #include "chrome/browser/views/first_run_view_base.h" #include "views/controls/button/button.h" #include "views/controls/combobox/combobox.h" @@ -26,7 +27,7 @@ class Profile; // some simple customizations during the first run. class FirstRunCustomizeView : public FirstRunViewBase, public views::ButtonListener, - public views::Combobox::Model { + public ComboboxModel { public: class CustomizeViewObserver { public: @@ -54,9 +55,9 @@ class FirstRunCustomizeView : public FirstRunViewBase, // Overridden form views::ButtonListener. virtual void ButtonPressed(views::Button* sender); - // Overridden form views::Combobox::Model. - virtual int GetItemCount(views::Combobox* source); - virtual std::wstring GetItemAt(views::Combobox* source, int index); + // Overridden form ComboboxModel. + virtual int GetItemCount(); + virtual std::wstring GetItemAt(int index); // Overridden from views::WindowDelegate. virtual std::wstring GetWindowTitle() const; diff --git a/chrome/browser/views/importer_view.cc b/chrome/browser/views/importer_view.cc index 77d3e67..5df68ef 100644 --- a/chrome/browser/views/importer_view.cc +++ b/chrome/browser/views/importer_view.cc @@ -150,8 +150,7 @@ views::View* ImporterView::GetContentsView() { return this; } -int ImporterView::GetItemCount(views::Combobox* source) { - DCHECK(source == profile_combobox_); +int ImporterView::GetItemCount() { DCHECK(importer_host_.get()); int item_count = importer_host_->GetAvailableProfileCount(); if (checkbox_items_.size() < static_cast<size_t>(item_count)) @@ -159,8 +158,7 @@ int ImporterView::GetItemCount(views::Combobox* source) { return item_count; } -std::wstring ImporterView::GetItemAt(views::Combobox* source, int index) { - DCHECK(source == profile_combobox_); +std::wstring ImporterView::GetItemAt(int index) { DCHECK(importer_host_.get()); return importer_host_->GetSourceProfileNameAt(index); } diff --git a/chrome/browser/views/importer_view.h b/chrome/browser/views/importer_view.h index 9194e75..88a07cb 100644 --- a/chrome/browser/views/importer_view.h +++ b/chrome/browser/views/importer_view.h @@ -5,6 +5,7 @@ #ifndef CHROME_BROWSER_VIEWS_IMPORTER_VIEW_H__ #define CHROME_BROWSER_VIEWS_IMPORTER_VIEW_H__ +#include "app/combobox_model.h" #include "chrome/browser/importer/importer.h" #include "views/controls/button/native_button.h" #include "views/controls/combobox/combobox.h" @@ -25,7 +26,7 @@ class Profile; // So now use dialog as a placeholder. class ImporterView : public views::View, public views::DialogDelegate, - public views::Combobox::Model, + public ComboboxModel, public views::Combobox::Listener, public ImportObserver { public: @@ -44,9 +45,9 @@ class ImporterView : public views::View, virtual bool Accept(); virtual views::View* GetContentsView(); - // Overridden from views::Combobox::Model. - virtual int GetItemCount(views::Combobox* source); - virtual std::wstring GetItemAt(views::Combobox* source, int index); + // Overridden from ComboboxModel. + virtual int GetItemCount(); + virtual std::wstring GetItemAt(int index); // Overridden from ChromeViews::Combobox::Listener virtual void ItemChanged(views::Combobox* combobox, diff --git a/chrome/browser/views/options/advanced_contents_view.cc b/chrome/browser/views/options/advanced_contents_view.cc index c5edfb3..d72ef65 100644 --- a/chrome/browser/views/options/advanced_contents_view.cc +++ b/chrome/browser/views/options/advanced_contents_view.cc @@ -12,6 +12,7 @@ #include <vsstyle.h> #include <vssym32.h> +#include "app/combobox_model.h" #include "app/gfx/canvas.h" #include "app/l10n_util.h" #include "app/resource_bundle.h" @@ -420,16 +421,16 @@ void AdvancedSection::InitControlLayout() { //////////////////////////////////////////////////////////////////////////////// // PrivacySection -class CookieBehaviorComboModel : public views::Combobox::Model { +class CookieBehaviorComboModel : public ComboboxModel { public: CookieBehaviorComboModel() {} // Return the number of items in the combo box. - virtual int GetItemCount(views::Combobox* source) { + virtual int GetItemCount() { return 3; } - virtual std::wstring GetItemAt(views::Combobox* source, int index) { + virtual std::wstring GetItemAt(int index) { const int kStringIDs[] = { IDS_OPTIONS_COOKIES_ACCEPT_ALL_COOKIES, IDS_OPTIONS_COOKIES_RESTRICT_THIRD_PARTY_COOKIES, diff --git a/chrome/browser/views/options/fonts_page_view.cc b/chrome/browser/views/options/fonts_page_view.cc index 7e99e9d..2affdb8 100644 --- a/chrome/browser/views/options/fonts_page_view.cc +++ b/chrome/browser/views/options/fonts_page_view.cc @@ -11,6 +11,7 @@ #include <vector> +#include "app/combobox_model.h" #include "app/gfx/canvas.h" #include "app/gfx/font.h" #include "app/l10n_util.h" @@ -38,7 +39,7 @@ static std::vector<CharacterEncoding::EncodingInfo> sorted_encoding_list; } // namespace -class DefaultEncodingComboboxModel : public views::Combobox::Model { +class DefaultEncodingComboboxModel : public ComboboxModel { public: DefaultEncodingComboboxModel() { canonical_encoding_names_length_ = @@ -57,12 +58,12 @@ class DefaultEncodingComboboxModel : public views::Combobox::Model { virtual ~DefaultEncodingComboboxModel() {} - // Overridden from views::Combobox::Model. - virtual int GetItemCount(views::Combobox* source) { + // Overridden from ComboboxModel. + virtual int GetItemCount() { return canonical_encoding_names_length_; } - virtual std::wstring GetItemAt(views::Combobox* source, int index) { + virtual std::wstring GetItemAt(int index) { DCHECK(index >= 0 && canonical_encoding_names_length_ > index); return sorted_encoding_list[index].encoding_display_name; } diff --git a/chrome/browser/views/options/general_page_view.cc b/chrome/browser/views/options/general_page_view.cc index f639efe..a1d9034 100644 --- a/chrome/browser/views/options/general_page_view.cc +++ b/chrome/browser/views/options/general_page_view.cc @@ -4,6 +4,7 @@ #include "chrome/browser/views/options/general_page_view.h" +#include "app/combobox_model.h" #include "app/l10n_util.h" #include "app/resource_bundle.h" #include "base/gfx/png_decoder.h" @@ -266,7 +267,7 @@ CustomHomePagesTableModel::Entry* /////////////////////////////////////////////////////////////////////////////// // SearchEngineListModel -class SearchEngineListModel : public views::Combobox::Model, +class SearchEngineListModel : public ComboboxModel, public TemplateURLModelObserver { public: explicit SearchEngineListModel(Profile* profile); @@ -276,9 +277,9 @@ class SearchEngineListModel : public views::Combobox::Model, // so that when the TemplateURLModel changes the combobox can be updated. void SetCombobox(views::Combobox* combobox); - // views::Combobox::Model overrides: - virtual int GetItemCount(views::Combobox* source); - virtual std::wstring GetItemAt(views::Combobox* source, int index); + // ComboboxModel overrides: + virtual int GetItemCount(); + virtual std::wstring GetItemAt(int index); // Returns the TemplateURL at the specified index. const TemplateURL* GetTemplateURLAt(int index); @@ -331,13 +332,12 @@ void SearchEngineListModel::SetCombobox(views::Combobox* combobox) { combobox_->SetEnabled(false); } -int SearchEngineListModel::GetItemCount(views::Combobox* source) { +int SearchEngineListModel::GetItemCount() { return static_cast<int>(template_urls_.size()); } -std::wstring SearchEngineListModel::GetItemAt(views::Combobox* source, - int index) { - DCHECK(index < GetItemCount(combobox_)); +std::wstring SearchEngineListModel::GetItemAt(int index) { + DCHECK(index < GetItemCount()); return template_urls_[index]->short_name(); } diff --git a/chrome/browser/views/options/language_combobox_model.cc b/chrome/browser/views/options/language_combobox_model.cc index 5e960e1..a026ab6 100644 --- a/chrome/browser/views/options/language_combobox_model.cc +++ b/chrome/browser/views/options/language_combobox_model.cc @@ -71,13 +71,12 @@ void LanguageComboboxModel::InitNativeNames( &locale_names_); } -// Overridden from views::Combobox::Model: -int LanguageComboboxModel::GetItemCount(views::Combobox* source) { +// Overridden from ComboboxModel: +int LanguageComboboxModel::GetItemCount() { return static_cast<int>(locale_names_.size()); } -std::wstring LanguageComboboxModel::GetItemAt(views::Combobox* source, - int index) { +std::wstring LanguageComboboxModel::GetItemAt(int index) { DCHECK(static_cast<int>(locale_names_.size()) > index); LocaleDataMap::const_iterator it = native_names_.find(locale_names_[index]); diff --git a/chrome/browser/views/options/language_combobox_model.h b/chrome/browser/views/options/language_combobox_model.h index 9109151..6298925 100644 --- a/chrome/browser/views/options/language_combobox_model.h +++ b/chrome/browser/views/options/language_combobox_model.h @@ -5,13 +5,13 @@ #ifndef CHROME_BROWSER_VIEWS_OPTIONS_LANGUAGE_COMBOBOX_MODEL_H_ #define CHROME_BROWSER_VIEWS_OPTIONS_LANGUAGE_COMBOBOX_MODEL_H_ +#include "app/combobox_model.h" #include "chrome/browser/profile.h" -#include "views/controls/combobox/combobox.h" /////////////////////////////////////////////////////////////////////////////// // LanguageComboboxModel // The model that fills the dropdown of valid UI languages. -class LanguageComboboxModel : public views::Combobox::Model { +class LanguageComboboxModel : public ComboboxModel { public: struct LocaleData { LocaleData() { } @@ -33,10 +33,10 @@ class LanguageComboboxModel : public views::Combobox::Model { void InitNativeNames(const std::vector<std::string>& locale_codes); - // Overridden from views::Combobox::Model: - virtual int GetItemCount(views::Combobox* source); + // Overridden from ComboboxModel: + virtual int GetItemCount(); - virtual std::wstring GetItemAt(views::Combobox* source, int index); + virtual std::wstring GetItemAt(int index); // Return the locale for the given index. E.g., may return pt-BR. std::string GetLocaleFromIndex(int index); diff --git a/chrome/browser/views/select_profile_dialog.cc b/chrome/browser/views/select_profile_dialog.cc index 6c4dead..d4af82e 100644 --- a/chrome/browser/views/select_profile_dialog.cc +++ b/chrome/browser/views/select_profile_dialog.cc @@ -109,15 +109,13 @@ views::View* SelectProfileDialog::GetContentsView() { return this; } -int SelectProfileDialog::GetItemCount(views::Combobox* source) { +int SelectProfileDialog::GetItemCount() { // Always show one more item in the combo box that allows the user to select // <New Profile>. return profiles_.size() + 1; } -std::wstring SelectProfileDialog::GetItemAt(views::Combobox* source, - int index) { - DCHECK(source == profile_combobox_); +std::wstring SelectProfileDialog::GetItemAt(int index) { DCHECK(index >= 0 && index <= static_cast<int>(profiles_.size())); // For the last item in the drop down, return the <New Profile> text, // otherwise return the corresponding profile name from the vector. diff --git a/chrome/browser/views/select_profile_dialog.h b/chrome/browser/views/select_profile_dialog.h index 22750b5..9c309de 100644 --- a/chrome/browser/views/select_profile_dialog.h +++ b/chrome/browser/views/select_profile_dialog.h @@ -10,6 +10,7 @@ #include <vector> +#include "app/combobox_model.h" #include "base/basictypes.h" #include "base/message_loop.h" #include "base/ref_counted.h" @@ -28,7 +29,7 @@ class Window; class SelectProfileDialog : public views::DialogDelegate, public views::View, - public views::Combobox::Model, + public ComboboxModel, public GetProfilesHelper::Delegate { public: // Creates and runs the dialog. @@ -54,9 +55,9 @@ class SelectProfileDialog virtual std::wstring GetWindowTitle() const; virtual bool IsModal() const { return false; } - // views::Combobox::Model methods. - virtual int GetItemCount(views::Combobox* source); - virtual std::wstring GetItemAt(views::Combobox* source, int index); + // ComboboxModel methods. + virtual int GetItemCount(); + virtual std::wstring GetItemAt(int index); // GetProfilesHelper::Delegate method. virtual void OnGetProfilesDone(const std::vector<std::wstring>& profiles); diff --git a/views/controls/combobox/combobox.cc b/views/controls/combobox/combobox.cc index 43165a2..5c5596f 100644 --- a/views/controls/combobox/combobox.cc +++ b/views/controls/combobox/combobox.cc @@ -4,6 +4,7 @@ #include "views/controls/combobox/combobox.h" +#include "app/combobox_model.h" #include "base/keyboard_codes.h" #include "base/logging.h" #include "views/controls/combobox/native_combobox_wrapper.h" @@ -16,7 +17,7 @@ const char Combobox::kViewClassName[] = "views/Combobox"; //////////////////////////////////////////////////////////////////////////////// // Combobox, public: -Combobox::Combobox(Model* model) +Combobox::Combobox(ComboboxModel* model) : native_wrapper_(NULL), model_(model), listener_(NULL), @@ -28,7 +29,7 @@ Combobox::~Combobox() { } void Combobox::ModelChanged() { - selected_item_ = std::min(0, model_->GetItemCount(this)); + selected_item_ = std::min(0, model_->GetItemCount()); if (native_wrapper_) native_wrapper_->UpdateFromModel(); } diff --git a/views/controls/combobox/combobox.h b/views/controls/combobox/combobox.h index a66e379..105aa54 100644 --- a/views/controls/combobox/combobox.h +++ b/views/controls/combobox/combobox.h @@ -7,6 +7,8 @@ #include "views/view.h" +class ComboboxModel; + namespace views { class NativeComboboxWrapper; @@ -17,15 +19,6 @@ class Combobox : public View { // The combobox's class name. static const char kViewClassName[]; - class Model { - public: - // Return the number of items in the combo box. - virtual int GetItemCount(Combobox* source) = 0; - - // Return the string that should be used to represent a given item. - virtual std::wstring GetItemAt(Combobox* source, int index) = 0; - }; - class Listener { public: // This is invoked once the selected item changed. @@ -35,7 +28,7 @@ class Combobox : public View { }; // |model| is not owned by the combo box. - explicit Combobox(Model* model); + explicit Combobox(ComboboxModel* model); virtual ~Combobox(); // Register |listener| for item change events. @@ -54,7 +47,7 @@ class Combobox : public View { void SelectionChanged(); // Accessor for |model_|. - Model* model() const { return model_; } + ComboboxModel* model() const { return model_; } // Overridden from View: virtual gfx::Size GetPreferredSize(); @@ -73,7 +66,7 @@ class Combobox : public View { private: // Our model. - Model* model_; + ComboboxModel* model_; // Item change listener. Listener* listener_; diff --git a/views/controls/combobox/native_combobox_win.cc b/views/controls/combobox/native_combobox_win.cc index dee1108..bc6102b 100644 --- a/views/controls/combobox/native_combobox_win.cc +++ b/views/controls/combobox/native_combobox_win.cc @@ -4,6 +4,7 @@ #include "views/controls/combobox/native_combobox_win.h" +#include "app/combobox_model.h" #include "app/gfx/font.h" #include "app/l10n_util.h" #include "app/resource_bundle.h" @@ -43,9 +44,9 @@ void NativeComboboxWin::UpdateFromModel() { gfx::Font font = ResourceBundle::GetSharedInstance().GetFont( ResourceBundle::BaseFont); int max_width = 0; - int num_items = combobox_->model()->GetItemCount(combobox_); + int num_items = combobox_->model()->GetItemCount(); for (int i = 0; i < num_items; ++i) { - const std::wstring& text = combobox_->model()->GetItemAt(combobox_, i); + const std::wstring& text = combobox_->model()->GetItemAt(i); // Inserting the Unicode formatting characters if necessary so that the // text is displayed correctly in right-to-left UIs. diff --git a/views/focus/focus_manager_unittest.cc b/views/focus/focus_manager_unittest.cc index 4df7f37..c72a394 100644 --- a/views/focus/focus_manager_unittest.cc +++ b/views/focus/focus_manager_unittest.cc @@ -8,6 +8,7 @@ // the events don't go to the Chrome window. #include "testing/gtest/include/gtest/gtest.h" +#include "app/combobox_model.h" #include "app/resource_bundle.h" #include "base/gfx/rect.h" #include "base/keyboard_codes.h" @@ -255,11 +256,11 @@ class BorderView : public NativeViewHost { DISALLOW_COPY_AND_ASSIGN(BorderView); }; -class DummyComboboxModel : public Combobox::Model { +class DummyComboboxModel : public ComboboxModel { public: - virtual int GetItemCount(Combobox* source) { return 10; } + virtual int GetItemCount() { return 10; } - virtual std::wstring GetItemAt(Combobox* source, int index) { + virtual std::wstring GetItemAt(int index) { return L"Item " + IntToWString(index); } }; @@ -735,16 +736,16 @@ class TestTextfield : public Textfield { } }; -class TestCombobox : public Combobox, public Combobox::Model { +class TestCombobox : public Combobox, public ComboboxModel { public: TestCombobox() : Combobox(this) { } virtual gfx::NativeView TestGetNativeControlView() { return native_wrapper_->GetTestingHandle(); } - virtual int GetItemCount(Combobox* source) { + virtual int GetItemCount() { return 10; } - virtual std::wstring GetItemAt(Combobox* source, int index) { + virtual std::wstring GetItemAt(int index) { return L"Hello combo"; } }; |