OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 #include "base/bind.h" | 5 #include "base/bind.h" |
6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "mojo/tools/embed/data.h" | 8 #include "mojo/tools/embed/data.h" |
9 #include "services/keyboard_native/kActionIcon.h" | 9 #include "services/keyboard_native/kActionIcon.h" |
10 #include "services/keyboard_native/kDeleteIcon.h" | 10 #include "services/keyboard_native/kDeleteIcon.h" |
11 #include "services/keyboard_native/kLowerCaseIcon.h" | 11 #include "services/keyboard_native/kLowerCaseIcon.h" |
12 #include "services/keyboard_native/kUpperCaseIcon.h" | 12 #include "services/keyboard_native/kUpperCaseIcon.h" |
13 #include "services/keyboard_native/key_layout.h" | 13 #include "services/keyboard_native/key_layout.h" |
14 #include "services/keyboard_native/predictor.h" | |
15 #include "services/keyboard_native/text_update_key.h" | |
14 #include "skia/ext/refptr.h" | 16 #include "skia/ext/refptr.h" |
15 #include "third_party/skia/include/core/SkCanvas.h" | 17 #include "third_party/skia/include/core/SkCanvas.h" |
16 #include "third_party/skia/include/core/SkImageDecoder.h" | 18 #include "third_party/skia/include/core/SkImageDecoder.h" |
17 #include "third_party/skia/include/core/SkStream.h" | 19 #include "third_party/skia/include/core/SkStream.h" |
18 #include "third_party/skia/include/core/SkTypeface.h" | 20 #include "third_party/skia/include/core/SkTypeface.h" |
19 #include "ui/gfx/codec/png_codec.h" | 21 #include "ui/gfx/codec/png_codec.h" |
20 #include "ui/gfx/geometry/point_f.h" | 22 #include "ui/gfx/geometry/point_f.h" |
21 #include "ui/gfx/shadow_value.h" | 23 #include "ui/gfx/shadow_value.h" |
22 #include "ui/gfx/skia_util.h" | 24 #include "ui/gfx/skia_util.h" |
23 #include "ui/gfx/vector2d.h" | 25 #include "ui/gfx/vector2d.h" |
24 | 26 |
25 namespace keyboard { | 27 namespace keyboard { |
26 | 28 |
27 // An implementation of Key that draws itself as ASCII text. | 29 // An implementation of Key that draws itself as ASCII text. |
28 class KeyLayout::TextKey : public Key { | 30 class KeyLayout::TextKey : public Key { |
29 public: | 31 public: |
30 TextKey(const char* text, | 32 TextKey(const char* text, |
31 base::Callback<void(const TextKey&)> touch_up_callback) | 33 base::Callback<void(const TextKey&)> touch_up_callback) |
32 : text_(text), touch_up_callback_(touch_up_callback) {} | 34 : text_(text), touch_up_callback_(touch_up_callback) {} |
33 | 35 |
34 ~TextKey() override {} | 36 ~TextKey() override {} |
35 | 37 |
36 void Draw(SkCanvas* canvas, | 38 void Draw(SkCanvas* canvas, SkPaint& paint, const gfx::RectF& rect) override { |
37 const SkPaint& paint, | |
38 const gfx::RectF& rect) override { | |
39 float text_baseline_offset = rect.height() / 5.0f; | 39 float text_baseline_offset = rect.height() / 5.0f; |
40 canvas->drawText(text_, strlen(text_), rect.x() + (rect.width() / 2.0f), | 40 canvas->drawText(text_, strlen(text_), rect.x() + (rect.width() / 2.0f), |
41 rect.y() + rect.height() - text_baseline_offset, paint); | 41 rect.y() + rect.height() - text_baseline_offset, paint); |
42 } | 42 } |
43 | 43 |
44 const char* ToText() const override { return text_; } | 44 const char* ToText() const override { return text_; } |
45 | 45 |
46 void OnTouchUp() override { touch_up_callback_.Run(*this); } | 46 void OnTouchUp() override { touch_up_callback_.Run(*this); } |
47 | 47 |
48 private: | 48 private: |
(...skipping 11 matching lines...) Expand all Loading... | |
60 const mojo::embed::Data& data) | 60 const mojo::embed::Data& data) |
61 : text_key_(text, touch_up_callback), bitmap_valid_(false), bitmap_() { | 61 : text_key_(text, touch_up_callback), bitmap_valid_(false), bitmap_() { |
62 bool result = gfx::PNGCodec::Decode( | 62 bool result = gfx::PNGCodec::Decode( |
63 reinterpret_cast<const unsigned char*>(data.data), data.size, &bitmap_); | 63 reinterpret_cast<const unsigned char*>(data.data), data.size, &bitmap_); |
64 bitmap_valid_ = result && bitmap_.width() > 0 && bitmap_.height() > 0; | 64 bitmap_valid_ = result && bitmap_.width() > 0 && bitmap_.height() > 0; |
65 DCHECK(bitmap_valid_); | 65 DCHECK(bitmap_valid_); |
66 } | 66 } |
67 ~ImageKey() override {} | 67 ~ImageKey() override {} |
68 | 68 |
69 // Key implementation. | 69 // Key implementation. |
70 void Draw(SkCanvas* canvas, | 70 void Draw(SkCanvas* canvas, SkPaint& paint, const gfx::RectF& rect) override { |
71 const SkPaint& paint, | |
72 const gfx::RectF& rect) override { | |
73 // If our bitmap is somehow invalid, default to drawing the text of the key. | 71 // If our bitmap is somehow invalid, default to drawing the text of the key. |
74 if (!bitmap_valid_) { | 72 if (!bitmap_valid_) { |
75 text_key_.Draw(canvas, paint, rect); | 73 text_key_.Draw(canvas, paint, rect); |
76 return; | 74 return; |
77 } | 75 } |
78 | 76 |
79 float width_scale = rect.width() / bitmap_.width(); | 77 float width_scale = rect.width() / bitmap_.width(); |
80 float height_scale = rect.height() / bitmap_.height(); | 78 float height_scale = rect.height() / bitmap_.height(); |
81 float scale = width_scale > height_scale ? height_scale : width_scale; | 79 float scale = width_scale > height_scale ? height_scale : width_scale; |
82 float target_width = bitmap_.width() * scale; | 80 float target_width = bitmap_.width() * scale; |
(...skipping 13 matching lines...) Expand all Loading... | |
96 private: | 94 private: |
97 KeyLayout::TextKey text_key_; | 95 KeyLayout::TextKey text_key_; |
98 bool bitmap_valid_; | 96 bool bitmap_valid_; |
99 SkBitmap bitmap_; | 97 SkBitmap bitmap_; |
100 | 98 |
101 DISALLOW_COPY_AND_ASSIGN(ImageKey); | 99 DISALLOW_COPY_AND_ASSIGN(ImageKey); |
102 }; | 100 }; |
103 | 101 |
104 KeyLayout::KeyLayout() | 102 KeyLayout::KeyLayout() |
105 : on_text_callback_(), | 103 : on_text_callback_(), |
104 on_suggest_text_callback_(), | |
106 layout_(&letters_layout_), | 105 layout_(&letters_layout_), |
107 key_map_(&lower_case_key_map_), | 106 key_map_(&lower_case_key_map_), |
107 predictor_(nullptr), | |
108 weak_factory_(this) { | 108 weak_factory_(this) { |
109 InitLayouts(); | 109 InitLayouts(); |
110 InitKeyMaps(); | 110 InitKeyMaps(); |
111 } | 111 } |
112 | 112 |
113 KeyLayout::~KeyLayout() { | 113 KeyLayout::~KeyLayout() { |
114 for (auto& row : lower_case_key_map_) { | 114 for (size_t i = 0; i < lower_case_key_map_.size(); i++) { |
115 auto& row = lower_case_key_map_[i]; | |
115 for (auto& key : row) { | 116 for (auto& key : row) { |
116 delete key; | 117 delete key; |
117 } | 118 } |
118 } | 119 } |
119 for (auto& row : upper_case_key_map_) { | 120 for (size_t i = 0; i < upper_case_key_map_.size(); i++) { |
121 auto& row = upper_case_key_map_[i]; | |
120 for (auto& key : row) { | 122 for (auto& key : row) { |
121 delete key; | 123 delete key; |
122 } | 124 } |
123 } | 125 } |
124 for (auto& row : symbols_key_map_) { | 126 for (size_t i = 0; i < symbols_key_map_.size(); i++) { |
APW
2015/07/31 22:36:43
UNDO!
riajiang
2015/08/01 01:23:09
Done.
| |
127 auto& row = symbols_key_map_[i]; | |
125 for (auto& key : row) { | 128 for (auto& key : row) { |
126 delete key; | 129 delete key; |
127 } | 130 } |
128 } | 131 } |
129 } | 132 } |
130 | 133 |
131 void KeyLayout::SetTextCallback( | 134 void KeyLayout::SetTextCallback( |
132 base::Callback<void(const std::string&)> on_text_callback) { | 135 base::Callback<void(const std::string&)> on_text_callback) { |
133 on_text_callback_ = on_text_callback; | 136 on_text_callback_ = on_text_callback; |
134 } | 137 } |
135 | 138 |
136 void KeyLayout::SetDeleteCallback(base::Callback<void()> on_delete_callback) { | 139 void KeyLayout::SetDeleteCallback(base::Callback<void()> on_delete_callback) { |
137 on_delete_callback_ = on_delete_callback; | 140 on_delete_callback_ = on_delete_callback; |
138 } | 141 } |
139 | 142 |
143 void KeyLayout::SetSuggestTextCallback( | |
144 base::Callback<void(const std::string&)> on_suggest_text_callback) { | |
145 on_suggest_text_callback_ = on_suggest_text_callback; | |
146 } | |
147 | |
140 void KeyLayout::SetKeyArea(const gfx::RectF& key_area) { | 148 void KeyLayout::SetKeyArea(const gfx::RectF& key_area) { |
141 key_area_ = key_area; | 149 key_area_ = key_area; |
142 } | 150 } |
143 | 151 |
144 void KeyLayout::Draw(SkCanvas* canvas) { | 152 void KeyLayout::Draw(SkCanvas* canvas) { |
145 // Add shadow beneath the key area. | 153 // Add shadow beneath the key area. |
146 int blur = 20; | 154 int blur = 20; |
147 SkColor color = SkColorSetARGB(0x80, 0, 0, 0); | 155 SkColor color = SkColorSetARGB(0x80, 0, 0, 0); |
148 std::vector<gfx::ShadowValue> shadows; | 156 std::vector<gfx::ShadowValue> shadows; |
149 shadows.push_back(gfx::ShadowValue(gfx::Vector2d(0, 0), blur, color)); | 157 shadows.push_back(gfx::ShadowValue(gfx::Vector2d(0, 0), blur, color)); |
(...skipping 17 matching lines...) Expand all Loading... | |
167 text_paint.setTextAlign(SkPaint::kCenter_Align); | 175 text_paint.setTextAlign(SkPaint::kCenter_Align); |
168 | 176 |
169 SkPaint paint; | 177 SkPaint paint; |
170 for (size_t row_index = 0; row_index < layout_->size(); row_index++) { | 178 for (size_t row_index = 0; row_index < layout_->size(); row_index++) { |
171 float current_top = key_area_.y() + row_index * row_height; | 179 float current_top = key_area_.y() + row_index * row_height; |
172 float current_left = key_area_.x(); | 180 float current_left = key_area_.x(); |
173 for (size_t key_index = 0; key_index < (*layout_)[row_index].size(); | 181 for (size_t key_index = 0; key_index < (*layout_)[row_index].size(); |
174 key_index++) { | 182 key_index++) { |
175 float key_width = static_cast<float>(key_area_.width()) * | 183 float key_width = static_cast<float>(key_area_.width()) * |
176 (*layout_)[row_index][key_index]; | 184 (*layout_)[row_index][key_index]; |
177 | |
178 (*key_map_)[row_index][key_index]->Draw( | 185 (*key_map_)[row_index][key_index]->Draw( |
179 canvas, text_paint, | 186 canvas, text_paint, |
180 gfx::RectF(current_left, current_top, key_width, row_height)); | 187 gfx::RectF(current_left, current_top, key_width, row_height)); |
181 current_left += key_width; | 188 current_left += key_width; |
182 } | 189 } |
183 } | 190 } |
184 } | 191 } |
185 | 192 |
186 KeyLayout::Key* KeyLayout::GetKeyAtPoint(const gfx::PointF& point) { | 193 KeyLayout::Key* KeyLayout::GetKeyAtPoint(const gfx::PointF& point) { |
187 if (!key_area_.Contains(point)) { | 194 if (!key_area_.Contains(point)) { |
(...skipping 13 matching lines...) Expand all Loading... | |
201 return (*key_map_)[row_index][key_index]; | 208 return (*key_map_)[row_index][key_index]; |
202 } | 209 } |
203 | 210 |
204 void KeyLayout::OnTouchUp(const gfx::PointF& touch_up) { | 211 void KeyLayout::OnTouchUp(const gfx::PointF& touch_up) { |
205 Key* key = GetKeyAtPoint(touch_up); | 212 Key* key = GetKeyAtPoint(touch_up); |
206 if (key != nullptr) { | 213 if (key != nullptr) { |
207 key->OnTouchUp(); | 214 key->OnTouchUp(); |
208 } | 215 } |
209 } | 216 } |
210 | 217 |
218 void KeyLayout::SetPredictor(Predictor* predictor) { | |
219 predictor_ = predictor; | |
220 predictor_->SetSuggestionKeys(lower_case_key_map_[0]); | |
221 } | |
222 | |
211 void KeyLayout::InitLayouts() { | 223 void KeyLayout::InitLayouts() { |
212 // Row layouts are specified by a vector of floats which indicate the percent | 224 // Row layouts are specified by a vector of floats which indicate the percent |
213 // width a given key takes up in that row. The floats of a given row *MUST* | 225 // width a given key takes up in that row. The floats of a given row *MUST* |
214 // add up to 1. | 226 // add up to 1. |
215 std::vector<float> ten_key_row_layout = { | 227 std::vector<float> ten_key_row_layout = { |
216 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f}; | 228 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f}; |
217 std::vector<float> nine_key_row_layout = { | 229 std::vector<float> nine_key_row_layout = { |
218 0.15f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.15f}; | 230 0.15f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.1f, 0.15f}; |
219 std::vector<float> seven_key_row_layout = { | 231 std::vector<float> seven_key_row_layout = { |
220 0.15f, 0.1f, 0.1f, 0.3f, 0.1f, 0.1f, 0.15f}; | 232 0.15f, 0.1f, 0.1f, 0.3f, 0.1f, 0.1f, 0.15f}; |
221 std::vector<float> five_key_row_layout = {0.15f, 0.1f, 0.5f, 0.1f, 0.15f}; | 233 std::vector<float> five_key_row_layout = {0.15f, 0.1f, 0.5f, 0.1f, 0.15f}; |
234 std::vector<float> three_key_row_layout = {0.33f, 0.33f, 0.33f}; | |
222 | 235 |
236 letters_layout_.push_back(three_key_row_layout); | |
223 letters_layout_.push_back(ten_key_row_layout); | 237 letters_layout_.push_back(ten_key_row_layout); |
224 letters_layout_.push_back(nine_key_row_layout); | 238 letters_layout_.push_back(nine_key_row_layout); |
225 letters_layout_.push_back(nine_key_row_layout); | 239 letters_layout_.push_back(nine_key_row_layout); |
226 letters_layout_.push_back(five_key_row_layout); | 240 letters_layout_.push_back(five_key_row_layout); |
227 | 241 |
242 symbols_layout_.push_back(three_key_row_layout); | |
228 symbols_layout_.push_back(ten_key_row_layout); | 243 symbols_layout_.push_back(ten_key_row_layout); |
229 symbols_layout_.push_back(nine_key_row_layout); | 244 symbols_layout_.push_back(nine_key_row_layout); |
230 symbols_layout_.push_back(nine_key_row_layout); | 245 symbols_layout_.push_back(nine_key_row_layout); |
231 symbols_layout_.push_back(seven_key_row_layout); | 246 symbols_layout_.push_back(seven_key_row_layout); |
232 } | 247 } |
233 | 248 |
234 void KeyLayout::OnKeyDoNothing(const TextKey& key) { | 249 void KeyLayout::OnKeyDoNothing(const TextKey& key) { |
235 // do nothing | 250 // do nothing |
236 } | 251 } |
237 | 252 |
238 void KeyLayout::OnKeyEmitText(const TextKey& key) { | 253 void KeyLayout::OnKeyEmitText(const TextKey& key) { |
254 predictor_->StoreCurWord(std::string(key.ToText())); | |
239 on_text_callback_.Run(std::string(key.ToText())); | 255 on_text_callback_.Run(std::string(key.ToText())); |
240 } | 256 } |
241 | 257 |
242 void KeyLayout::OnKeyDelete(const TextKey& key) { | 258 void KeyLayout::OnKeyDelete(const TextKey& key) { |
259 predictor_->DeleteCharInCurWord(); | |
243 on_delete_callback_.Run(); | 260 on_delete_callback_.Run(); |
244 } | 261 } |
245 | 262 |
263 void KeyLayout::OnSuggestKeyEmitText(const TextUpdateKey& key) { | |
264 std::string update_string = std::string(key.ToText()); | |
265 int delete_size = predictor_->ChoseSuggestWord(std::string(key.ToText())); | |
APW
2015/07/31 22:36:43
ChooseSuggestedWord
riajiang
2015/08/01 01:23:09
Done.
| |
266 for (int i = 0; i < delete_size; i++) { | |
267 on_delete_callback_.Run(); | |
268 } | |
269 on_suggest_text_callback_.Run(update_string); | |
270 } | |
271 | |
246 void KeyLayout::OnKeySwitchToUpperCase(const TextKey& key) { | 272 void KeyLayout::OnKeySwitchToUpperCase(const TextKey& key) { |
247 layout_ = &letters_layout_; | 273 layout_ = &letters_layout_; |
248 key_map_ = &upper_case_key_map_; | 274 key_map_ = &upper_case_key_map_; |
249 } | 275 } |
250 | 276 |
251 void KeyLayout::OnKeySwitchToLowerCase(const TextKey& key) { | 277 void KeyLayout::OnKeySwitchToLowerCase(const TextKey& key) { |
252 layout_ = &letters_layout_; | 278 layout_ = &letters_layout_; |
253 key_map_ = &lower_case_key_map_; | 279 key_map_ = &lower_case_key_map_; |
254 } | 280 } |
255 | 281 |
256 void KeyLayout::OnKeySwitchToSymbols(const TextKey& key) { | 282 void KeyLayout::OnKeySwitchToSymbols(const TextKey& key) { |
257 layout_ = &symbols_layout_; | 283 layout_ = &symbols_layout_; |
258 key_map_ = &symbols_key_map_; | 284 key_map_ = &symbols_key_map_; |
259 } | 285 } |
260 | 286 |
261 void KeyLayout::InitKeyMaps() { | 287 void KeyLayout::InitKeyMaps() { |
262 base::Callback<void(const TextKey&)> do_nothing_callback = | 288 base::Callback<void(const TextKey&)> do_nothing_callback = |
263 base::Bind(&KeyLayout::OnKeyDoNothing, weak_factory_.GetWeakPtr()); | 289 base::Bind(&KeyLayout::OnKeyDoNothing, weak_factory_.GetWeakPtr()); |
264 base::Callback<void(const TextKey&)> emit_text_callback = | 290 base::Callback<void(const TextKey&)> emit_text_callback = |
265 base::Bind(&KeyLayout::OnKeyEmitText, weak_factory_.GetWeakPtr()); | 291 base::Bind(&KeyLayout::OnKeyEmitText, weak_factory_.GetWeakPtr()); |
266 base::Callback<void(const TextKey&)> delete_callback = | 292 base::Callback<void(const TextKey&)> delete_callback = |
267 base::Bind(&KeyLayout::OnKeyDelete, weak_factory_.GetWeakPtr()); | 293 base::Bind(&KeyLayout::OnKeyDelete, weak_factory_.GetWeakPtr()); |
294 base::Callback<void(const TextUpdateKey&)> suggest_emit_text_callback = | |
295 base::Bind(&KeyLayout::OnSuggestKeyEmitText, weak_factory_.GetWeakPtr()); | |
268 base::Callback<void(const TextKey&)> switch_to_upper_case_callback = | 296 base::Callback<void(const TextKey&)> switch_to_upper_case_callback = |
269 base::Bind(&KeyLayout::OnKeySwitchToUpperCase, | 297 base::Bind(&KeyLayout::OnKeySwitchToUpperCase, |
270 weak_factory_.GetWeakPtr()); | 298 weak_factory_.GetWeakPtr()); |
271 base::Callback<void(const TextKey&)> switch_to_lower_case_callback = | 299 base::Callback<void(const TextKey&)> switch_to_lower_case_callback = |
272 base::Bind(&KeyLayout::OnKeySwitchToLowerCase, | 300 base::Bind(&KeyLayout::OnKeySwitchToLowerCase, |
273 weak_factory_.GetWeakPtr()); | 301 weak_factory_.GetWeakPtr()); |
274 base::Callback<void(const TextKey&)> switch_to_symbols_callback = | 302 base::Callback<void(const TextKey&)> switch_to_symbols_callback = |
275 base::Bind(&KeyLayout::OnKeySwitchToSymbols, weak_factory_.GetWeakPtr()); | 303 base::Bind(&KeyLayout::OnKeySwitchToSymbols, weak_factory_.GetWeakPtr()); |
276 | 304 |
277 ImageKey* switch_to_upper_case_image_key = new ImageKey( | 305 ImageKey* switch_to_upper_case_image_key = new ImageKey( |
278 "/\\", switch_to_upper_case_callback, keyboard_native::kUpperCaseIcon); | 306 "/\\", switch_to_upper_case_callback, keyboard_native::kUpperCaseIcon); |
279 ImageKey* switch_to_lower_case_image_key = new ImageKey( | 307 ImageKey* switch_to_lower_case_image_key = new ImageKey( |
280 "\\/", switch_to_lower_case_callback, keyboard_native::kLowerCaseIcon); | 308 "\\/", switch_to_lower_case_callback, keyboard_native::kLowerCaseIcon); |
281 ImageKey* delete_image_key = | 309 ImageKey* delete_image_key = |
282 new ImageKey("<-", delete_callback, keyboard_native::kDeleteIcon); | 310 new ImageKey("<-", delete_callback, keyboard_native::kDeleteIcon); |
283 ImageKey* action_image_key = | 311 ImageKey* action_image_key = |
284 new ImageKey(":)", do_nothing_callback, keyboard_native::kActionIcon); | 312 new ImageKey(":)", do_nothing_callback, keyboard_native::kActionIcon); |
285 | 313 |
286 std::vector<Key*> lower_case_key_map_row_one = { | 314 std::vector<KeyLayout::Key*> suggestion_strip_key_map_row = { |
APW
2015/07/31 22:36:43
lets make copies of these for each layout and then
riajiang
2015/08/01 01:23:09
Done.
| |
315 new TextUpdateKey("", suggest_emit_text_callback), | |
316 new TextUpdateKey("", suggest_emit_text_callback), | |
317 new TextUpdateKey("", suggest_emit_text_callback)}; | |
318 | |
319 std::vector<KeyLayout::Key*> lower_case_key_map_row_one = { | |
287 new TextKey("q", emit_text_callback), | 320 new TextKey("q", emit_text_callback), |
288 new TextKey("w", emit_text_callback), | 321 new TextKey("w", emit_text_callback), |
289 new TextKey("e", emit_text_callback), | 322 new TextKey("e", emit_text_callback), |
290 new TextKey("r", emit_text_callback), | 323 new TextKey("r", emit_text_callback), |
291 new TextKey("t", emit_text_callback), | 324 new TextKey("t", emit_text_callback), |
292 new TextKey("y", emit_text_callback), | 325 new TextKey("y", emit_text_callback), |
293 new TextKey("u", emit_text_callback), | 326 new TextKey("u", emit_text_callback), |
294 new TextKey("o", emit_text_callback), | 327 new TextKey("o", emit_text_callback), |
295 new TextKey("i", emit_text_callback), | 328 new TextKey("i", emit_text_callback), |
296 new TextKey("p", emit_text_callback)}; | 329 new TextKey("p", emit_text_callback)}; |
297 | 330 |
298 std::vector<Key*> lower_case_key_map_row_two = { | 331 std::vector<KeyLayout::Key*> lower_case_key_map_row_two = { |
APW
2015/07/31 22:36:43
why are these all now KeyLayout::?
riajiang
2015/08/01 01:23:09
Deleted
| |
299 new TextKey("a", emit_text_callback), | 332 new TextKey("a", emit_text_callback), |
300 new TextKey("s", emit_text_callback), | 333 new TextKey("s", emit_text_callback), |
301 new TextKey("d", emit_text_callback), | 334 new TextKey("d", emit_text_callback), |
302 new TextKey("f", emit_text_callback), | 335 new TextKey("f", emit_text_callback), |
303 new TextKey("g", emit_text_callback), | 336 new TextKey("g", emit_text_callback), |
304 new TextKey("h", emit_text_callback), | 337 new TextKey("h", emit_text_callback), |
305 new TextKey("j", emit_text_callback), | 338 new TextKey("j", emit_text_callback), |
306 new TextKey("k", emit_text_callback), | 339 new TextKey("k", emit_text_callback), |
307 new TextKey("l", emit_text_callback)}; | 340 new TextKey("l", emit_text_callback)}; |
308 | 341 |
309 std::vector<Key*> lower_case_key_map_row_three = { | 342 std::vector<KeyLayout::Key*> lower_case_key_map_row_three = { |
310 switch_to_upper_case_image_key, | 343 switch_to_upper_case_image_key, |
311 new TextKey("z", emit_text_callback), | 344 new TextKey("z", emit_text_callback), |
312 new TextKey("x", emit_text_callback), | 345 new TextKey("x", emit_text_callback), |
313 new TextKey("c", emit_text_callback), | 346 new TextKey("c", emit_text_callback), |
314 new TextKey("v", emit_text_callback), | 347 new TextKey("v", emit_text_callback), |
315 new TextKey("b", emit_text_callback), | 348 new TextKey("b", emit_text_callback), |
316 new TextKey("n", emit_text_callback), | 349 new TextKey("n", emit_text_callback), |
317 new TextKey("m", emit_text_callback), | 350 new TextKey("m", emit_text_callback), |
318 delete_image_key}; | 351 delete_image_key}; |
319 | 352 |
320 std::vector<Key*> lower_case_key_map_row_four = { | 353 std::vector<KeyLayout::Key*> lower_case_key_map_row_four = { |
321 new TextKey("sym", switch_to_symbols_callback), | 354 new TextKey("sym", switch_to_symbols_callback), |
322 new TextKey(",", emit_text_callback), | 355 new TextKey(",", emit_text_callback), |
323 new TextKey(" ", emit_text_callback), | 356 new TextKey(" ", emit_text_callback), |
324 new TextKey(".", emit_text_callback), | 357 new TextKey(".", emit_text_callback), |
325 action_image_key}; | 358 action_image_key}; |
326 | 359 |
327 lower_case_key_map_ = {lower_case_key_map_row_one, | 360 lower_case_key_map_ = {suggestion_strip_key_map_row, |
361 lower_case_key_map_row_one, | |
328 lower_case_key_map_row_two, | 362 lower_case_key_map_row_two, |
329 lower_case_key_map_row_three, | 363 lower_case_key_map_row_three, |
330 lower_case_key_map_row_four}; | 364 lower_case_key_map_row_four}; |
331 | 365 |
332 std::vector<Key*> upper_case_key_map_row_one = { | 366 std::vector<KeyLayout::Key*> upper_case_key_map_row_one = { |
333 new TextKey("Q", emit_text_callback), | 367 new TextKey("Q", emit_text_callback), |
334 new TextKey("W", emit_text_callback), | 368 new TextKey("W", emit_text_callback), |
335 new TextKey("E", emit_text_callback), | 369 new TextKey("E", emit_text_callback), |
336 new TextKey("R", emit_text_callback), | 370 new TextKey("R", emit_text_callback), |
337 new TextKey("T", emit_text_callback), | 371 new TextKey("T", emit_text_callback), |
338 new TextKey("Y", emit_text_callback), | 372 new TextKey("Y", emit_text_callback), |
339 new TextKey("U", emit_text_callback), | 373 new TextKey("U", emit_text_callback), |
340 new TextKey("O", emit_text_callback), | 374 new TextKey("O", emit_text_callback), |
341 new TextKey("I", emit_text_callback), | 375 new TextKey("I", emit_text_callback), |
342 new TextKey("P", emit_text_callback)}; | 376 new TextKey("P", emit_text_callback)}; |
343 | 377 |
344 std::vector<Key*> upper_case_key_map_row_two = { | 378 std::vector<KeyLayout::Key*> upper_case_key_map_row_two = { |
345 new TextKey("A", emit_text_callback), | 379 new TextKey("A", emit_text_callback), |
346 new TextKey("S", emit_text_callback), | 380 new TextKey("S", emit_text_callback), |
347 new TextKey("D", emit_text_callback), | 381 new TextKey("D", emit_text_callback), |
348 new TextKey("F", emit_text_callback), | 382 new TextKey("F", emit_text_callback), |
349 new TextKey("G", emit_text_callback), | 383 new TextKey("G", emit_text_callback), |
350 new TextKey("H", emit_text_callback), | 384 new TextKey("H", emit_text_callback), |
351 new TextKey("J", emit_text_callback), | 385 new TextKey("J", emit_text_callback), |
352 new TextKey("K", emit_text_callback), | 386 new TextKey("K", emit_text_callback), |
353 new TextKey("L", emit_text_callback)}; | 387 new TextKey("L", emit_text_callback)}; |
354 | 388 |
355 std::vector<Key*> upper_case_key_map_row_three = { | 389 std::vector<KeyLayout::Key*> upper_case_key_map_row_three = { |
356 switch_to_lower_case_image_key, | 390 switch_to_lower_case_image_key, |
357 new TextKey("Z", emit_text_callback), | 391 new TextKey("Z", emit_text_callback), |
358 new TextKey("X", emit_text_callback), | 392 new TextKey("X", emit_text_callback), |
359 new TextKey("C", emit_text_callback), | 393 new TextKey("C", emit_text_callback), |
360 new TextKey("V", emit_text_callback), | 394 new TextKey("V", emit_text_callback), |
361 new TextKey("B", emit_text_callback), | 395 new TextKey("B", emit_text_callback), |
362 new TextKey("N", emit_text_callback), | 396 new TextKey("N", emit_text_callback), |
363 new TextKey("M", emit_text_callback), | 397 new TextKey("M", emit_text_callback), |
364 delete_image_key}; | 398 delete_image_key}; |
365 | 399 |
366 std::vector<Key*> upper_case_key_map_row_four = { | 400 std::vector<KeyLayout::Key*> upper_case_key_map_row_four = { |
367 new TextKey("SYM", switch_to_symbols_callback), | 401 new TextKey("SYM", switch_to_symbols_callback), |
368 new TextKey(",", emit_text_callback), | 402 new TextKey(",", emit_text_callback), |
369 new TextKey(" ", emit_text_callback), | 403 new TextKey(" ", emit_text_callback), |
370 new TextKey(".", emit_text_callback), | 404 new TextKey(".", emit_text_callback), |
371 action_image_key}; | 405 action_image_key}; |
372 | 406 |
373 upper_case_key_map_ = {upper_case_key_map_row_one, | 407 upper_case_key_map_ = {suggestion_strip_key_map_row, |
408 upper_case_key_map_row_one, | |
374 upper_case_key_map_row_two, | 409 upper_case_key_map_row_two, |
375 upper_case_key_map_row_three, | 410 upper_case_key_map_row_three, |
376 upper_case_key_map_row_four}; | 411 upper_case_key_map_row_four}; |
377 | 412 |
378 std::vector<Key*> symbols_key_map_row_one = { | 413 std::vector<KeyLayout::Key*> symbols_key_map_row_one = { |
379 new TextKey("1", emit_text_callback), | 414 new TextKey("1", emit_text_callback), |
380 new TextKey("2", emit_text_callback), | 415 new TextKey("2", emit_text_callback), |
381 new TextKey("3", emit_text_callback), | 416 new TextKey("3", emit_text_callback), |
382 new TextKey("4", emit_text_callback), | 417 new TextKey("4", emit_text_callback), |
383 new TextKey("5", emit_text_callback), | 418 new TextKey("5", emit_text_callback), |
384 new TextKey("6", emit_text_callback), | 419 new TextKey("6", emit_text_callback), |
385 new TextKey("7", emit_text_callback), | 420 new TextKey("7", emit_text_callback), |
386 new TextKey("8", emit_text_callback), | 421 new TextKey("8", emit_text_callback), |
387 new TextKey("9", emit_text_callback), | 422 new TextKey("9", emit_text_callback), |
388 new TextKey("0", emit_text_callback)}; | 423 new TextKey("0", emit_text_callback)}; |
389 | 424 |
390 std::vector<Key*> symbols_key_map_row_two = { | 425 std::vector<KeyLayout::Key*> symbols_key_map_row_two = { |
391 new TextKey("@", emit_text_callback), | 426 new TextKey("@", emit_text_callback), |
392 new TextKey("#", emit_text_callback), | 427 new TextKey("#", emit_text_callback), |
393 new TextKey("$", emit_text_callback), | 428 new TextKey("$", emit_text_callback), |
394 new TextKey("%", emit_text_callback), | 429 new TextKey("%", emit_text_callback), |
395 new TextKey("&", emit_text_callback), | 430 new TextKey("&", emit_text_callback), |
396 new TextKey("-", emit_text_callback), | 431 new TextKey("-", emit_text_callback), |
397 new TextKey("+", emit_text_callback), | 432 new TextKey("+", emit_text_callback), |
398 new TextKey("(", emit_text_callback), | 433 new TextKey("(", emit_text_callback), |
399 new TextKey(")", emit_text_callback)}; | 434 new TextKey(")", emit_text_callback)}; |
400 | 435 |
401 std::vector<Key*> symbols_key_map_row_three = { | 436 std::vector<KeyLayout::Key*> symbols_key_map_row_three = { |
402 new TextKey("=\\<", switch_to_symbols_callback), | 437 new TextKey("=\\<", switch_to_symbols_callback), |
403 new TextKey("*", emit_text_callback), | 438 new TextKey("*", emit_text_callback), |
404 new TextKey("\"", emit_text_callback), | 439 new TextKey("\"", emit_text_callback), |
405 new TextKey("'", emit_text_callback), | 440 new TextKey("'", emit_text_callback), |
406 new TextKey(":", emit_text_callback), | 441 new TextKey(":", emit_text_callback), |
407 new TextKey(";", emit_text_callback), | 442 new TextKey(";", emit_text_callback), |
408 new TextKey("!", emit_text_callback), | 443 new TextKey("!", emit_text_callback), |
409 new TextKey("?", emit_text_callback), | 444 new TextKey("?", emit_text_callback), |
410 delete_image_key}; | 445 delete_image_key}; |
411 | 446 |
412 std::vector<Key*> symbols_key_map_row_four = { | 447 std::vector<KeyLayout::Key*> symbols_key_map_row_four = { |
413 new TextKey("ABC", switch_to_lower_case_callback), | 448 new TextKey("ABC", switch_to_lower_case_callback), |
414 new TextKey(",", emit_text_callback), | 449 new TextKey(",", emit_text_callback), |
415 new TextKey("_", emit_text_callback), | 450 new TextKey("_", emit_text_callback), |
416 new TextKey(" ", emit_text_callback), | 451 new TextKey(" ", emit_text_callback), |
417 new TextKey("/", emit_text_callback), | 452 new TextKey("/", emit_text_callback), |
418 new TextKey(".", emit_text_callback), | 453 new TextKey(".", emit_text_callback), |
419 action_image_key}; | 454 action_image_key}; |
420 | 455 |
421 symbols_key_map_ = {symbols_key_map_row_one, | 456 symbols_key_map_ = {suggestion_strip_key_map_row, |
457 symbols_key_map_row_one, | |
422 symbols_key_map_row_two, | 458 symbols_key_map_row_two, |
423 symbols_key_map_row_three, | 459 symbols_key_map_row_three, |
424 symbols_key_map_row_four}; | 460 symbols_key_map_row_four}; |
425 } | 461 } |
426 } | 462 |
427 // namespace keyboard | 463 } // namespace keyboard |
OLD | NEW |