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

Side by Side Diff: chrome/browser/chromeos/status/input_method_menu.cc

Issue 6378008: Add GetScreenMode() to status_area_host.h. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: review fix Created 9 years, 11 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/browser/chromeos/status/input_method_menu.h" 5 #include "chrome/browser/chromeos/status/input_method_menu.h"
6 6
7 #include <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #include "app/l10n_util.h" 10 #include "app/l10n_util.h"
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after
111 } 111 }
112 112
113 } // namespace 113 } // namespace
114 114
115 namespace chromeos { 115 namespace chromeos {
116 116
117 //////////////////////////////////////////////////////////////////////////////// 117 ////////////////////////////////////////////////////////////////////////////////
118 // InputMethodMenu 118 // InputMethodMenu
119 119
120 InputMethodMenu::InputMethodMenu(PrefService* pref_service, 120 InputMethodMenu::InputMethodMenu(PrefService* pref_service,
121 bool is_browser_mode, 121 StatusAreaHost::ScreenMode screen_mode,
122 bool is_screen_locker_mode, 122 bool for_out_of_box_experience_dialog)
123 bool is_out_of_box_experience_mode)
124 : input_method_descriptors_(CrosLibrary::Get()->GetInputMethodLibrary()-> 123 : input_method_descriptors_(CrosLibrary::Get()->GetInputMethodLibrary()->
125 GetActiveInputMethods()), 124 GetActiveInputMethods()),
126 model_(NULL), 125 model_(NULL),
127 // Be aware that the constructor of |input_method_menu_| calls 126 // Be aware that the constructor of |input_method_menu_| calls
128 // GetItemCount() in this class. Therefore, GetItemCount() have to return 127 // GetItemCount() in this class. Therefore, GetItemCount() have to return
129 // 0 when |model_| is NULL. 128 // 0 when |model_| is NULL.
130 ALLOW_THIS_IN_INITIALIZER_LIST(input_method_menu_(this)), 129 ALLOW_THIS_IN_INITIALIZER_LIST(input_method_menu_(this)),
131 minimum_input_method_menu_width_(0), 130 minimum_input_method_menu_width_(0),
132 pref_service_(pref_service), 131 pref_service_(pref_service),
133 is_browser_mode_(is_browser_mode), 132 screen_mode_(screen_mode),
134 is_screen_locker_mode_(is_screen_locker_mode), 133 for_out_of_box_experience_dialog_(for_out_of_box_experience_dialog) {
135 is_out_of_box_experience_mode_(is_out_of_box_experience_mode) {
136 DCHECK(input_method_descriptors_.get() && 134 DCHECK(input_method_descriptors_.get() &&
137 !input_method_descriptors_->empty()); 135 !input_method_descriptors_->empty());
138 136
139 // Sync current and previous input methods on Chrome prefs with ibus-daemon. 137 // Sync current and previous input methods on Chrome prefs with ibus-daemon.
140 // InputMethodChanged() will be called soon and the indicator will be updated. 138 // InputMethodChanged() will be called soon and the indicator will be updated.
141 InputMethodLibrary* library = CrosLibrary::Get()->GetInputMethodLibrary(); 139 InputMethodLibrary* library = CrosLibrary::Get()->GetInputMethodLibrary();
142 if (pref_service && is_browser_mode_) { 140 if (pref_service && (screen_mode_ == StatusAreaHost::kBrowserMode)) {
143 previous_input_method_pref_.Init( 141 previous_input_method_pref_.Init(
144 prefs::kLanguagePreviousInputMethod, pref_service, this); 142 prefs::kLanguagePreviousInputMethod, pref_service, this);
145 const std::string previous_input_method_id = 143 const std::string previous_input_method_id =
146 previous_input_method_pref_.GetValue(); 144 previous_input_method_pref_.GetValue();
147 if (!previous_input_method_id.empty()) { 145 if (!previous_input_method_id.empty()) {
148 library->ChangeInputMethod(previous_input_method_id); 146 library->ChangeInputMethod(previous_input_method_id);
149 } 147 }
150 148
151 current_input_method_pref_.Init( 149 current_input_method_pref_.Init(
152 prefs::kLanguageCurrentInputMethod, pref_service, this); 150 prefs::kLanguageCurrentInputMethod, pref_service, this);
153 const std::string current_input_method_id = 151 const std::string current_input_method_id =
154 current_input_method_pref_.GetValue(); 152 current_input_method_pref_.GetValue();
155 if (!current_input_method_id.empty()) { 153 if (!current_input_method_id.empty()) {
156 library->ChangeInputMethod(current_input_method_id); 154 library->ChangeInputMethod(current_input_method_id);
157 } 155 }
158 } 156 }
159 library->AddObserver(this); 157 library->AddObserver(this);
160 158
161 if (!is_browser_mode_ && !is_screen_locker_mode_) { 159 if (screen_mode_ == StatusAreaHost::kLoginMode) {
162 // This button is for the login screen. 160 // This button is for the login screen.
163 registrar_.Add(this, 161 registrar_.Add(this,
164 NotificationType::LOGIN_USER_CHANGED, 162 NotificationType::LOGIN_USER_CHANGED,
165 NotificationService::AllSources()); 163 NotificationService::AllSources());
166 } 164 }
167 } 165 }
168 166
169 InputMethodMenu::~InputMethodMenu() { 167 InputMethodMenu::~InputMethodMenu() {
170 // RemoveObserver() is no-op if |this| object is already removed from the 168 // RemoveObserver() is no-op if |this| object is already removed from the
171 // observer list. 169 // observer list.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
208 } 206 }
209 207
210 // Separator(s) or the "Customize language and input..." button. 208 // Separator(s) or the "Customize language and input..." button.
211 return false; 209 return false;
212 } 210 }
213 211
214 int InputMethodMenu::GetGroupIdAt(int index) const { 212 int InputMethodMenu::GetGroupIdAt(int index) const {
215 DCHECK_GE(index, 0); 213 DCHECK_GE(index, 0);
216 214
217 if (IndexIsInInputMethodList(index)) { 215 if (IndexIsInInputMethodList(index)) {
218 return is_out_of_box_experience_mode_ ? 216 return for_out_of_box_experience_dialog_ ?
219 kRadioGroupNone : kRadioGroupLanguage; 217 kRadioGroupNone : kRadioGroupLanguage;
220 } 218 }
221 219
222 if (GetPropertyIndex(index, &index)) { 220 if (GetPropertyIndex(index, &index)) {
223 const ImePropertyList& property_list 221 const ImePropertyList& property_list
224 = CrosLibrary::Get()->GetInputMethodLibrary()->current_ime_properties(); 222 = CrosLibrary::Get()->GetInputMethodLibrary()->current_ime_properties();
225 return property_list.at(index).selection_item_id; 223 return property_list.at(index).selection_item_id;
226 } 224 }
227 225
228 return kRadioGroupNone; 226 return kRadioGroupNone;
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
271 } 269 }
272 270
273 ui::MenuModel::ItemType InputMethodMenu::GetTypeAt(int index) const { 271 ui::MenuModel::ItemType InputMethodMenu::GetTypeAt(int index) const {
274 DCHECK_GE(index, 0); 272 DCHECK_GE(index, 0);
275 273
276 if (IndexPointsToConfigureImeMenuItem(index)) { 274 if (IndexPointsToConfigureImeMenuItem(index)) {
277 return ui::MenuModel::TYPE_COMMAND; // "Customize language and input" 275 return ui::MenuModel::TYPE_COMMAND; // "Customize language and input"
278 } 276 }
279 277
280 if (IndexIsInInputMethodList(index)) { 278 if (IndexIsInInputMethodList(index)) {
281 return is_out_of_box_experience_mode_ ? 279 return for_out_of_box_experience_dialog_ ?
282 ui::MenuModel::TYPE_COMMAND : ui::MenuModel::TYPE_RADIO; 280 ui::MenuModel::TYPE_COMMAND : ui::MenuModel::TYPE_RADIO;
283 } 281 }
284 282
285 if (GetPropertyIndex(index, &index)) { 283 if (GetPropertyIndex(index, &index)) {
286 const ImePropertyList& property_list 284 const ImePropertyList& property_list
287 = CrosLibrary::Get()->GetInputMethodLibrary()->current_ime_properties(); 285 = CrosLibrary::Get()->GetInputMethodLibrary()->current_ime_properties();
288 if (property_list.at(index).is_selection_item) { 286 if (property_list.at(index).is_selection_item) {
289 return ui::MenuModel::TYPE_RADIO; 287 return ui::MenuModel::TYPE_RADIO;
290 } 288 }
291 return ui::MenuModel::TYPE_COMMAND; 289 return ui::MenuModel::TYPE_COMMAND;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
383 size_t num_active_input_methods) { 381 size_t num_active_input_methods) {
384 UserMetrics::RecordAction( 382 UserMetrics::RecordAction(
385 UserMetricsAction("LanguageMenuButton_InputMethodChanged")); 383 UserMetricsAction("LanguageMenuButton_InputMethodChanged"));
386 UpdateUIFromInputMethod(current_input_method, num_active_input_methods); 384 UpdateUIFromInputMethod(current_input_method, num_active_input_methods);
387 } 385 }
388 386
389 void InputMethodMenu::PreferenceUpdateNeeded( 387 void InputMethodMenu::PreferenceUpdateNeeded(
390 InputMethodLibrary* obj, 388 InputMethodLibrary* obj,
391 const InputMethodDescriptor& previous_input_method, 389 const InputMethodDescriptor& previous_input_method,
392 const InputMethodDescriptor& current_input_method) { 390 const InputMethodDescriptor& current_input_method) {
393 if (is_browser_mode_) { 391 if (screen_mode_ == StatusAreaHost::kBrowserMode) {
394 if (pref_service_) { // make sure we're not in unit tests. 392 if (pref_service_) { // make sure we're not in unit tests.
395 // Sometimes (e.g. initial boot) |previous_input_method.id| is empty. 393 // Sometimes (e.g. initial boot) |previous_input_method.id| is empty.
396 previous_input_method_pref_.SetValue(previous_input_method.id); 394 previous_input_method_pref_.SetValue(previous_input_method.id);
397 current_input_method_pref_.SetValue(current_input_method.id); 395 current_input_method_pref_.SetValue(current_input_method.id);
398 } 396 }
399 } else { 397 } else if (screen_mode_ == StatusAreaHost::kLoginMode) {
400 // We're in the login screen (i.e. not in the normal browser mode nor screen
401 // locker mode).
402 if (g_browser_process && g_browser_process->local_state()) { 398 if (g_browser_process && g_browser_process->local_state()) {
403 g_browser_process->local_state()->SetString( 399 g_browser_process->local_state()->SetString(
404 language_prefs::kPreferredKeyboardLayout, current_input_method.id); 400 language_prefs::kPreferredKeyboardLayout, current_input_method.id);
405 g_browser_process->local_state()->SavePersistentPrefs(); 401 g_browser_process->local_state()->SavePersistentPrefs();
406 } 402 }
407 } 403 }
408 } 404 }
409 405
410 void InputMethodMenu::PrepareForMenuOpen() { 406 void InputMethodMenu::PrepareForMenuOpen() {
411 UserMetrics::RecordAction(UserMetricsAction("LanguageMenuButton_Open")); 407 UserMetrics::RecordAction(UserMetricsAction("LanguageMenuButton_Open"));
(...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after
610 CrosLibrary::Get()->GetInputMethodLibrary()->RemoveObserver(this); 606 CrosLibrary::Get()->GetInputMethodLibrary()->RemoveObserver(this);
611 } 607 }
612 } 608 }
613 609
614 void InputMethodMenu::SetMinimumWidth(int width) { 610 void InputMethodMenu::SetMinimumWidth(int width) {
615 // On the OOBE network selection screen, fixed width menu would be preferable. 611 // On the OOBE network selection screen, fixed width menu would be preferable.
616 minimum_input_method_menu_width_ = width; 612 minimum_input_method_menu_width_ = width;
617 } 613 }
618 614
619 } // namespace chromeos 615 } // namespace chromeos
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/status/input_method_menu.h ('k') | chrome/browser/chromeos/status/input_method_menu_button.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698