OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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/language_menu_button.h" | 5 #include "chrome/browser/chromeos/status/language_menu_button.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 | 8 |
9 #include "app/l10n_util.h" | 9 #include "app/l10n_util.h" |
10 #include "app/resource_bundle.h" | 10 #include "app/resource_bundle.h" |
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 // in this class. Therefore, GetItemCount() have to return 0 when | 142 // in this class. Therefore, GetItemCount() have to return 0 when |
143 // |model_| is NULL. | 143 // |model_| is NULL. |
144 ALLOW_THIS_IN_INITIALIZER_LIST(language_menu_(this)), | 144 ALLOW_THIS_IN_INITIALIZER_LIST(language_menu_(this)), |
145 host_(host) { | 145 host_(host) { |
146 DCHECK(input_method_descriptors_.get() && | 146 DCHECK(input_method_descriptors_.get() && |
147 !input_method_descriptors_->empty()); | 147 !input_method_descriptors_->empty()); |
148 set_border(NULL); | 148 set_border(NULL); |
149 SetFont(ResourceBundle::GetSharedInstance().GetFont( | 149 SetFont(ResourceBundle::GetSharedInstance().GetFont( |
150 ResourceBundle::BaseFont).DeriveFont(1, gfx::Font::BOLD)); | 150 ResourceBundle::BaseFont).DeriveFont(1, gfx::Font::BOLD)); |
151 SetEnabledColor(0xB3FFFFFF); // White with 70% Alpha | 151 SetEnabledColor(0xB3FFFFFF); // White with 70% Alpha |
152 | |
153 // TODO(yusukes): Make the initial state "enabled" and delete SetDisabledColor | |
154 // when crosbug.com/3683 is fixed. | |
155 SetDisabledColor(0x4DFFFFFF); // White with 30% Alpha | |
156 SetEnabled(false); // Disable the button until the first FocusIn comes in. | |
157 | |
158 SetShowHighlighted(false); | 152 SetShowHighlighted(false); |
159 // Update the model | 153 // Update the model |
160 RebuildModel(); | 154 RebuildModel(); |
161 // Grab the real estate. | 155 // Grab the real estate. |
162 UpdateIcon(kSpacer, L"" /* no tooltip */); | 156 UpdateIcon(kSpacer, L"" /* no tooltip */); |
163 | 157 |
164 // Draw the default indicator "EN". The default indicator "EN" is used when | 158 // Draw the default indicator "EN". The default indicator "EN" is used when |
165 // |pref_service| is not available (for example, unit tests) or |pref_service| | 159 // |pref_service| is not available (for example, unit tests) or |pref_service| |
166 // is available, but Chrome preferences are not available (for example, | 160 // is available, but Chrome preferences are not available (for example, |
167 // initial OS boot). | 161 // initial OS boot). |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
426 void LanguageMenuButton::LocaleChanged() { | 420 void LanguageMenuButton::LocaleChanged() { |
427 const chromeos::InputMethodDescriptor& input_method = | 421 const chromeos::InputMethodDescriptor& input_method = |
428 CrosLibrary::Get()->GetLanguageLibrary()->current_input_method(); | 422 CrosLibrary::Get()->GetLanguageLibrary()->current_input_method(); |
429 const std::wstring name = FormatInputLanguage(input_method, false, false); | 423 const std::wstring name = FormatInputLanguage(input_method, false, false); |
430 const std::wstring tooltip = FormatInputLanguage(input_method, true, true); | 424 const std::wstring tooltip = FormatInputLanguage(input_method, true, true); |
431 UpdateIcon(name, tooltip); | 425 UpdateIcon(name, tooltip); |
432 Layout(); | 426 Layout(); |
433 SchedulePaint(); | 427 SchedulePaint(); |
434 } | 428 } |
435 | 429 |
436 void LanguageMenuButton::FocusChanged(LanguageLibrary* obj) { | |
437 // TODO(yusukes): Remove this function when crosbug.com/3683 is fixed. | |
438 LanguageLibrary* language_library = CrosLibrary::Get()->GetLanguageLibrary(); | |
439 if (language_library->is_focused() && !IsEnabled()) { | |
440 // Enable the button on the first FocusIn event. | |
441 SetEnabled(true); | |
442 SchedulePaint(); | |
443 } | |
444 } | |
445 | |
446 void LanguageMenuButton::UpdateIcon( | 430 void LanguageMenuButton::UpdateIcon( |
447 const std::wstring& name, const std::wstring& tooltip) { | 431 const std::wstring& name, const std::wstring& tooltip) { |
448 if (!tooltip.empty()) { | 432 if (!tooltip.empty()) { |
449 SetTooltipText(tooltip); | 433 SetTooltipText(tooltip); |
450 } | 434 } |
451 SetText(name); | 435 SetText(name); |
452 set_alignment(TextButton::ALIGN_RIGHT); | 436 set_alignment(TextButton::ALIGN_RIGHT); |
453 SchedulePaint(); | 437 SchedulePaint(); |
454 } | 438 } |
455 | 439 |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
543 DCHECK(model_.get()); | 527 DCHECK(model_.get()); |
544 if (index >= model_->GetItemCount()) { | 528 if (index >= model_->GetItemCount()) { |
545 return false; | 529 return false; |
546 } | 530 } |
547 | 531 |
548 return ((model_->GetTypeAt(index) == menus::MenuModel::TYPE_RADIO) && | 532 return ((model_->GetTypeAt(index) == menus::MenuModel::TYPE_RADIO) && |
549 (model_->GetCommandIdAt(index) == COMMAND_ID_CUSTOMIZE_LANGUAGE)); | 533 (model_->GetCommandIdAt(index) == COMMAND_ID_CUSTOMIZE_LANGUAGE)); |
550 } | 534 } |
551 | 535 |
552 } // namespace chromeos | 536 } // namespace chromeos |
OLD | NEW |