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

Side by Side Diff: chrome/browser/chromeos/input_method/ibus_controller.h

Issue 9999018: chrome/browser/chromeos/input_method/ refactoring [part 6 of 6] (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 years, 8 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) 2012 The Chromium Authors. All rights reserved. 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 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 #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_IBUS_CONTROLLER_H_ 5 #ifndef CHROME_BROWSER_CHROMEOS_INPUT_METHOD_IBUS_CONTROLLER_H_
6 #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_IBUS_CONTROLLER_H_ 6 #define CHROME_BROWSER_CHROMEOS_INPUT_METHOD_IBUS_CONTROLLER_H_
7 #pragma once 7 #pragma once
8 8
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
11 #include <vector> 11 #include <vector>
12 12
13 #include "base/basictypes.h"
14 #include "base/logging.h" // DCHECK
15 #include "base/string_split.h"
16 #include "chrome/browser/chromeos/input_method/input_method_descriptor.h"
17
18 namespace chromeos { 13 namespace chromeos {
19 namespace input_method { 14 namespace input_method {
20 15
21 struct InputMethodConfigValue; 16 struct InputMethodConfigValue;
22 struct InputMethodProperty; 17 struct InputMethodProperty;
23 typedef std::vector<InputMethodProperty> InputMethodPropertyList; 18 typedef std::vector<InputMethodProperty> InputMethodPropertyList;
24 typedef std::vector<std::pair<double, double> > HandwritingStroke;
25 19
26 // IBusController is used to interact with the IBus daemon. 20 // IBusController is used to interact with the system input method framework
21 // (which is currently IBus).
27 class IBusController { 22 class IBusController {
28 public: 23 public:
29 class Observer { 24 class Observer {
30 public: 25 public:
31 virtual ~Observer() {} 26 virtual ~Observer() {}
32 27 virtual void PropertyChanged() = 0;
33 // Called when current input method is changed by a user. 28 // TODO(yusukes): Add functions for IPC error handling.
34 virtual void OnCurrentInputMethodChanged(
35 const InputMethodDescriptor& current_input_method) = 0;
36
37 // Called when "RegisterProperties" signal is sent from
38 // ibus-daemon. The signal contains a list of properties for a
39 // specific input method engine. For example, Japanese input method
40 // might have the following properties:
41 //
42 // ----------------------------------
43 // key: InputMode.Hiragana
44 // label: Hiragana
45 // is_selection_item: true
46 // is_selection_item_checked: true
47 // selection_item_id: 1
48 // ----------------------------------
49 // key: InputMode.Katakana
50 // label: Katakana
51 // is_selection_item: true
52 // is_selection_item_checked: false
53 // selection_item_id: 1
54 // ----------------------------------
55 // ...
56 // ----------------------------------
57 virtual void OnRegisterImeProperties(
58 const InputMethodPropertyList& prop_list) = 0;
59
60 // Called when "UpdateProperty" signal is sent from ibus-daemon. The
61 // signal contains one or more properties which is updated
62 // recently. Keys the signal contains are a subset of keys registered
63 // by the "RegisterProperties" signal above. For example, Japanese
64 // input method might send the following properties:
65 //
66 // ----------------------------------
67 // key: InputMode.Hiragana
68 // label: Hiragana
69 // is_selection_item: true
70 // is_selection_item_checked: false
71 // selection_item_id: ...
72 // ----------------------------------
73 // key: InputMode.Katakana
74 // label: Katakana
75 // is_selection_item: true
76 // is_selection_item_checked: true
77 // selection_item_id: ...
78 // ----------------------------------
79 //
80 // Note: Please do not use selection_item_ids in |prop_list|. Dummy
81 // values are filled in the field.
82 virtual void OnUpdateImeProperty(
83 const InputMethodPropertyList& prop_list) = 0;
84
85 // Called when ibus connects or disconnects.
86 virtual void OnConnectionChange(bool connected) = 0;
87 }; 29 };
88 30
89 // Creates an instance of the class. The constructor is unused. 31 // Creates an instance of the class.
90 static IBusController* Create(); 32 static IBusController* Create();
91 33
92 virtual ~IBusController(); 34 virtual ~IBusController();
93 35
94 // Connects to the IBus daemon.
95 virtual void Connect() = 0;
96
97 // Adds and removes observers for IBus UI notifications. Clients must be
98 // sure to remove the observer before they go away. To capture the
99 // initial connection change, you should add an observer before calling
100 // Connect().
101 virtual void AddObserver(Observer* observer) = 0; 36 virtual void AddObserver(Observer* observer) = 0;
102 virtual void RemoveObserver(Observer* observer) = 0; 37 virtual void RemoveObserver(Observer* observer) = 0;
103 38
104 // Stops ibus-daemon. Returns true on success. 39 // Starts the system input method framework. No-op if it's already started.
105 virtual bool StopInputMethodProcess() = 0; 40 virtual bool Start() = 0;
106 41
107 // Changes the current input method engine to |name|. Returns true on 42 // Stops the system input method framework.
108 // success. Examples of names: "pinyin", "m17n:ar:kbd", 43 virtual bool Stop() = 0;
109 // "xkb:us:dvorak:eng".
110 virtual bool ChangeInputMethod(const std::string& name) = 0;
111 44
112 // Sets whether the input method property specified by |key| is activated. 45 // Sets a configuration of an input method engine. Returns true if the
113 // If |activated| is true, activates the property. If |activated| is false, 46 // configuration is successfully set. For example, when you set
114 // deactivates the property. 47 // "engine/Mozc/history_learning_level", |section| should be "engine/Mozc",
115 // TODO(yusukes): "SetInputMethodPropertyActivated" might be better? 48 // and |config_name| should be "history_learning_level".
116 virtual void SetImePropertyActivated(const std::string& key,
117 bool activated) = 0;
118
119 // Sets a configuration of ibus-daemon or IBus engines to |value|.
120 // Returns true if the configuration is successfully set.
121 //
122 // To set 'panel/custom_font', |section| should be "panel", and
123 // |config_name| should be "custom_font".
124 virtual bool SetInputMethodConfig(const std::string& section, 49 virtual bool SetInputMethodConfig(const std::string& section,
125 const std::string& config_name, 50 const std::string& config_name,
126 const InputMethodConfigValue& value) = 0; 51 const InputMethodConfigValue& value) = 0;
127 52
128 // Sends a handwriting stroke to ibus-daemon. The std::pair contains x 53 // Changes the current input method engine to |id|. Returns true on success.
129 // and y coordinates. (0.0, 0.0) represents the top-left corner of a 54 // Example IDs: "mozc", "m17n:ar:kbd".
130 // handwriting area, and (1.0, 1.0) does the bottom-right. For example, 55 virtual bool ChangeInputMethod(const std::string& id) = 0;
131 // the second stroke for U+30ED (Katakana character Ro) would be 56
132 // something like [(0,0), (1,0), (1,1)]. stroke.size() should always be 57 // Activates the input method property specified by the |key|. Returns true on
133 // >= 2 (i.e. a single dot is not allowed). 58 // success.
59 virtual bool ActivateInputMethodProperty(const std::string& key) = 0;
60
61 // Gets the latest input method property send from the system input method
62 // framework.
63 virtual const InputMethodPropertyList& GetCurrentProperties() const = 0;
64
65 #if defined(USE_VIRTUAL_KEYBOARD)
66 typedef std::vector<std::pair<double, double> > HandwritingStroke;
67
68 // Sends a handwriting stroke to the system input method. The std::pair
69 // contains x and y coordinates. (0.0, 0.0) represents the top-left corner of
70 // a handwriting area, and (1.0, 1.0) does the bottom-right. For example, the
71 // second stroke for U+30ED (Katakana character Ro) would be something like
72 // [(0,0), (1,0), (1,1)]. stroke.size() should always be >= 2 (i.e. a single
73 // dot is not allowed).
134 virtual void SendHandwritingStroke(const HandwritingStroke& stroke) = 0; 74 virtual void SendHandwritingStroke(const HandwritingStroke& stroke) = 0;
135 75
136 // Clears the last N handwriting strokes. Pass zero for clearing all strokes. 76 // Clears the last N handwriting strokes. Pass zero for clearing all strokes.
137 // TODO(yusukes): Currently ibus-daemon only accepts 0 for |n_strokes|. 77 // TODO(yusukes): Currently ibus-daemon only accepts 0 for |n_strokes|.
138 virtual void CancelHandwriting(int n_strokes) = 0; 78 virtual void CancelHandwriting(int n_strokes) = 0;
139 79 #endif
140 // Creates an InputMethodDescriptor object. |raw_layout| is a comma-separated
141 // list of XKB and virtual keyboard layouts.
142 // (e.g. "special-us-virtual-keyboard-for-the-input-method,us")
143 virtual InputMethodDescriptor CreateInputMethodDescriptor(
144 const std::string& id,
145 const std::string& name,
146 const std::string& raw_layout,
147 const std::string& language_code) = 0;
148 }; 80 };
149 81
150 } // namespace input_method 82 } // namespace input_method
151 } // namespace chromeos 83 } // namespace chromeos
152 84
85 // TODO(yusukes,nona): This interface does not depend on IBus actually.
86 // Rename the file if needed.
87
153 #endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_IBUS_CONTROLLER_H_ 88 #endif // CHROME_BROWSER_CHROMEOS_INPUT_METHOD_IBUS_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698