unified_ime_detailed_view_controller.cc 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. // Copyright 2018 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. #include "ash/system/ime/unified_ime_detailed_view_controller.h"
  5. #include "ash/accessibility/accessibility_controller_impl.h"
  6. #include "ash/ime/ime_controller_impl.h"
  7. #include "ash/shell.h"
  8. #include "ash/strings/grit/ash_strings.h"
  9. #include "ash/system/ime/tray_ime_chromeos.h"
  10. #include "ash/system/tray/detailed_view_delegate.h"
  11. #include "ash/system/tray/system_tray_notifier.h"
  12. #include "ui/base/l10n/l10n_util.h"
  13. namespace ash {
  14. namespace {
  15. ImeListView::SingleImeBehavior GetSingleImeBehavior() {
  16. return Shell::Get()->ime_controller()->managed_by_policy()
  17. ? ImeListView::SHOW_SINGLE_IME
  18. : ImeListView::HIDE_SINGLE_IME;
  19. }
  20. } // namespace
  21. UnifiedIMEDetailedViewController::UnifiedIMEDetailedViewController(
  22. UnifiedSystemTrayController* tray_controller)
  23. : detailed_view_delegate_(
  24. std::make_unique<DetailedViewDelegate>(tray_controller)) {
  25. Shell::Get()->system_tray_notifier()->AddIMEObserver(this);
  26. Shell::Get()->system_tray_notifier()->AddVirtualKeyboardObserver(this);
  27. Shell::Get()->accessibility_controller()->AddObserver(this);
  28. }
  29. UnifiedIMEDetailedViewController::~UnifiedIMEDetailedViewController() {
  30. Shell::Get()->system_tray_notifier()->RemoveIMEObserver(this);
  31. Shell::Get()->system_tray_notifier()->RemoveVirtualKeyboardObserver(this);
  32. Shell::Get()->accessibility_controller()->RemoveObserver(this);
  33. }
  34. views::View* UnifiedIMEDetailedViewController::CreateView() {
  35. DCHECK(!view_);
  36. view_ = new IMEDetailedView(detailed_view_delegate_.get(),
  37. Shell::Get()->ime_controller());
  38. view_->Init(ShouldShowKeyboardToggle(), GetSingleImeBehavior());
  39. return view_;
  40. }
  41. std::u16string UnifiedIMEDetailedViewController::GetAccessibleName() const {
  42. return l10n_util::GetStringUTF16(
  43. IDS_ASH_QUICK_SETTINGS_BUBBLE_IME_SETTINGS_ACCESSIBLE_DESCRIPTION);
  44. }
  45. void UnifiedIMEDetailedViewController::OnKeyboardSuppressionChanged(
  46. bool suppressed) {
  47. keyboard_suppressed_ = suppressed;
  48. Update();
  49. }
  50. void UnifiedIMEDetailedViewController::OnAccessibilityStatusChanged() {
  51. Update();
  52. }
  53. void UnifiedIMEDetailedViewController::OnIMERefresh() {
  54. Update();
  55. }
  56. void UnifiedIMEDetailedViewController::OnIMEMenuActivationChanged(
  57. bool is_active) {
  58. Update();
  59. }
  60. void UnifiedIMEDetailedViewController::Update() {
  61. ImeControllerImpl* ime_controller = Shell::Get()->ime_controller();
  62. view_->Update(ime_controller->current_ime().id,
  63. ime_controller->GetVisibleImes(),
  64. ime_controller->current_ime_menu_items(),
  65. ShouldShowKeyboardToggle(), GetSingleImeBehavior());
  66. }
  67. bool UnifiedIMEDetailedViewController::ShouldShowKeyboardToggle() const {
  68. return keyboard_suppressed_ && !Shell::Get()
  69. ->accessibility_controller()
  70. ->virtual_keyboard()
  71. .enabled();
  72. }
  73. } // namespace ash