Home | History | Annotate | Download | only in ime
      1 // Copyright 2014 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 #include "ash/ash_export.h"
      6 
      7 #include "ash/ime/input_method_menu_item.h"
      8 #include "base/observer_list.h"
      9 
     10 #ifndef ASH_IME_INPUT_METHOD_MENU_MANAGER_H_
     11 #define ASH_IME_INPUT_METHOD_MENU_MANAGER_H_
     12 
     13 template<typename Type> struct DefaultSingletonTraits;
     14 
     15 namespace ash {
     16 namespace ime {
     17 
     18 class ASH_EXPORT InputMethodMenuManager {
     19 public:
     20   class Observer {
     21    public:
     22     virtual ~Observer() {}
     23 
     24     // Called when the list of menu items is changed.
     25     virtual void InputMethodMenuItemChanged(
     26         InputMethodMenuManager* manager) = 0;
     27   };
     28 
     29   ~InputMethodMenuManager();
     30 
     31   void AddObserver(Observer* observer);
     32   void RemoveObserver(Observer* observer);
     33 
     34   // Obtains the singleton instance.
     35   static InputMethodMenuManager* GetInstance();
     36 
     37   // Sets the list of input method menu items. The list could be empty().
     38   void SetCurrentInputMethodMenuItemList(
     39       const InputMethodMenuItemList& menu_list);
     40 
     41   // Gets the list of input method menu items. The list could be empty().
     42   InputMethodMenuItemList GetCurrentInputMethodMenuItemList() const;
     43 
     44   // True if the key exists in the menu_list_.
     45   bool HasInputMethodMenuItemForKey(const std::string& key) const;
     46 
     47  private:
     48   InputMethodMenuManager();
     49 
     50   // For Singleton to be able to construct an instance.
     51   friend struct DefaultSingletonTraits<InputMethodMenuManager>;
     52 
     53   // Menu item list of the input method.  This is set by extension IMEs.
     54   InputMethodMenuItemList menu_list_;
     55 
     56   // Observers who will be notified when menu changes.
     57   ObserverList<Observer> observers_;
     58 
     59   DISALLOW_COPY_AND_ASSIGN(InputMethodMenuManager);
     60 };
     61 
     62 }  // namespace ime
     63 }  // namespace ash
     64 
     65 #endif // ASH_IME_INPUT_METHOD_MENU_MANAGER_H_
     66