1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef UI_BASE_MODELS_COMBOBOX_MODEL_H_ 6 #define UI_BASE_MODELS_COMBOBOX_MODEL_H_ 7 8 #include "base/strings/string16.h" 9 #include "ui/base/ui_base_export.h" 10 11 namespace ui { 12 13 class ComboboxModelObserver; 14 15 // A data model for a combo box. 16 class UI_BASE_EXPORT ComboboxModel { 17 public: 18 // Returns the number of items in the combo box. 19 virtual int GetItemCount() const = 0; 20 21 // Returns the string at the specified index. 22 virtual base::string16 GetItemAt(int index) = 0; 23 24 // Should return true if the item at |index| is a non-selectable separator 25 // item. 26 virtual bool IsItemSeparatorAt(int index); 27 28 // The index of the item that is selected by default (before user 29 // interaction). 30 virtual int GetDefaultIndex() const; 31 32 // Returns true if the item at |index| is enabled. 33 virtual bool IsItemEnabledAt(int index) const; 34 35 // Adds/removes an observer. Override if model supports mutation. AddObserver(ComboboxModelObserver * observer)36 virtual void AddObserver(ComboboxModelObserver* observer) {} RemoveObserver(ComboboxModelObserver * observer)37 virtual void RemoveObserver(ComboboxModelObserver* observer) {} 38 39 protected: ~ComboboxModel()40 virtual ~ComboboxModel() {} 41 }; 42 43 } // namespace ui 44 45 #endif // UI_BASE_MODELS_COMBOBOX_MODEL_H_ 46