| // Copyright 2014 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. |
| |
| #include "base/macros.h" |
| #include "base/observer_list.h" |
| #include "ui/chromeos/ime/input_method_menu_item.h" |
| #include "ui/chromeos/ui_chromeos_export.h" |
| |
| #ifndef UI_CHROMEOS_IME_INPUT_METHOD_MENU_MANAGER_H_ |
| #define UI_CHROMEOS_IME_INPUT_METHOD_MENU_MANAGER_H_ |
| |
| namespace base { |
| template <typename Type> |
| struct DefaultSingletonTraits; |
| } // namespace base |
| |
| namespace ui { |
| namespace ime { |
| |
| class UI_CHROMEOS_EXPORT InputMethodMenuManager { |
| public: |
| class Observer { |
| public: |
| virtual ~Observer() {} |
| |
| // Called when the list of menu items is changed. |
| virtual void InputMethodMenuItemChanged( |
| InputMethodMenuManager* manager) = 0; |
| }; |
| |
| ~InputMethodMenuManager(); |
| |
| void AddObserver(Observer* observer); |
| void RemoveObserver(Observer* observer); |
| |
| // Obtains the singleton instance. |
| static InputMethodMenuManager* GetInstance(); |
| |
| // Sets the list of input method menu items. The list could be empty(). |
| void SetCurrentInputMethodMenuItemList( |
| const InputMethodMenuItemList& menu_list); |
| |
| // Gets the list of input method menu items. The list could be empty(). |
| InputMethodMenuItemList GetCurrentInputMethodMenuItemList() const; |
| |
| // True if the key exists in the menu_list_. |
| bool HasInputMethodMenuItemForKey(const std::string& key) const; |
| |
| private: |
| InputMethodMenuManager(); |
| |
| // For Singleton to be able to construct an instance. |
| friend struct base::DefaultSingletonTraits<InputMethodMenuManager>; |
| |
| // Menu item list of the input method. This is set by extension IMEs. |
| InputMethodMenuItemList menu_list_; |
| |
| // Observers who will be notified when menu changes. |
| base::ObserverList<Observer> observers_; |
| |
| DISALLOW_COPY_AND_ASSIGN(InputMethodMenuManager); |
| }; |
| |
| } // namespace ime |
| } // namespace ui |
| |
| #endif // UI_CHROMEOS_IME_INPUT_METHOD_MENU_MANAGER_H_ |