| Index: ash/common/system/ime/tray_ime_chromeos.cc
|
| diff --git a/ash/common/system/ime/tray_ime_chromeos.cc b/ash/common/system/ime/tray_ime_chromeos.cc
|
| deleted file mode 100644
|
| index 8b2dca551d5fae56f6e67a014893950718b567f5..0000000000000000000000000000000000000000
|
| --- a/ash/common/system/ime/tray_ime_chromeos.cc
|
| +++ /dev/null
|
| @@ -1,385 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "ash/common/system/ime/tray_ime_chromeos.h"
|
| -
|
| -#include <vector>
|
| -
|
| -#include "ash/common/material_design/material_design_controller.h"
|
| -#include "ash/common/session/session_state_delegate.h"
|
| -#include "ash/common/system/tray/hover_highlight_view.h"
|
| -#include "ash/common/system/tray/system_tray.h"
|
| -#include "ash/common/system/tray/system_tray_controller.h"
|
| -#include "ash/common/system/tray/system_tray_delegate.h"
|
| -#include "ash/common/system/tray/system_tray_notifier.h"
|
| -#include "ash/common/system/tray/tray_constants.h"
|
| -#include "ash/common/system/tray/tray_details_view.h"
|
| -#include "ash/common/system/tray/tray_item_more.h"
|
| -#include "ash/common/system/tray/tray_item_view.h"
|
| -#include "ash/common/system/tray/tray_popup_item_style.h"
|
| -#include "ash/common/system/tray/tray_popup_utils.h"
|
| -#include "ash/common/system/tray/tray_utils.h"
|
| -#include "ash/common/system/tray/tri_view.h"
|
| -#include "ash/common/system/tray_accessibility.h"
|
| -#include "ash/common/wm_shell.h"
|
| -#include "ash/resources/grit/ash_resources.h"
|
| -#include "ash/resources/vector_icons/vector_icons.h"
|
| -#include "ash/strings/grit/ash_strings.h"
|
| -#include "base/logging.h"
|
| -#include "base/strings/utf_string_conversions.h"
|
| -#include "ui/accessibility/ax_enums.h"
|
| -#include "ui/accessibility/ax_node_data.h"
|
| -#include "ui/base/l10n/l10n_util.h"
|
| -#include "ui/base/resource/resource_bundle.h"
|
| -#include "ui/gfx/font.h"
|
| -#include "ui/gfx/image/image.h"
|
| -#include "ui/gfx/paint_vector_icon.h"
|
| -#include "ui/keyboard/keyboard_util.h"
|
| -#include "ui/views/controls/image_view.h"
|
| -#include "ui/views/controls/label.h"
|
| -#include "ui/views/layout/box_layout.h"
|
| -#include "ui/views/widget/widget.h"
|
| -
|
| -namespace ash {
|
| -namespace tray {
|
| -
|
| -// A |HoverHighlightView| that uses bold or normal font depending on whether
|
| -// it is selected. This view exposes itself as a checkbox to the accessibility
|
| -// framework.
|
| -class SelectableHoverHighlightView : public HoverHighlightView {
|
| - public:
|
| - SelectableHoverHighlightView(ViewClickListener* listener,
|
| - const base::string16& label,
|
| - bool selected)
|
| - : HoverHighlightView(listener), selected_(selected) {
|
| - AddLabel(label, gfx::ALIGN_LEFT, selected);
|
| - }
|
| -
|
| - ~SelectableHoverHighlightView() override {}
|
| -
|
| - protected:
|
| - // Overridden from views::View.
|
| - void GetAccessibleNodeData(ui::AXNodeData* node_data) override {
|
| - HoverHighlightView::GetAccessibleNodeData(node_data);
|
| - node_data->role = ui::AX_ROLE_CHECK_BOX;
|
| - if (selected_)
|
| - node_data->AddStateFlag(ui::AX_STATE_CHECKED);
|
| - }
|
| -
|
| - private:
|
| - bool selected_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SelectableHoverHighlightView);
|
| -};
|
| -
|
| -class IMEDefaultView : public TrayItemMore {
|
| - public:
|
| - IMEDefaultView(SystemTrayItem* owner, const base::string16& label)
|
| - : TrayItemMore(owner) {
|
| - if (MaterialDesignController::IsSystemTrayMenuMaterial()) {
|
| - SetImage(gfx::CreateVectorIcon(kSystemMenuKeyboardIcon, kMenuIconColor));
|
| - } else {
|
| - ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
|
| - SetImage(*bundle.GetImageNamed(IDR_AURA_UBER_TRAY_IME).ToImageSkia());
|
| - }
|
| - UpdateLabel(label);
|
| - }
|
| -
|
| - ~IMEDefaultView() override {}
|
| -
|
| - void UpdateLabel(const base::string16& label) {
|
| - SetLabel(label);
|
| - SetAccessibleName(label);
|
| - }
|
| -
|
| - protected:
|
| - // TrayItemMore:
|
| - void UpdateStyle() override {
|
| - TrayItemMore::UpdateStyle();
|
| -
|
| - if (!MaterialDesignController::IsSystemTrayMenuMaterial())
|
| - return;
|
| -
|
| - std::unique_ptr<TrayPopupItemStyle> style = CreateStyle();
|
| - SetImage(
|
| - gfx::CreateVectorIcon(kSystemMenuKeyboardIcon, style->GetIconColor()));
|
| - }
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(IMEDefaultView);
|
| -};
|
| -
|
| -class IMEDetailedView : public ImeListView {
|
| - public:
|
| - IMEDetailedView(SystemTrayItem* owner, LoginStatus login)
|
| - : ImeListView(owner),
|
| - login_(login),
|
| - settings_(nullptr),
|
| - settings_button_(nullptr) {}
|
| -
|
| - ~IMEDetailedView() override {}
|
| -
|
| - void SetImeManagedMessage(base::string16 ime_managed_message) {
|
| - ime_managed_message_ = ime_managed_message;
|
| - }
|
| -
|
| - void Update(const IMEInfoList& list,
|
| - const IMEPropertyInfoList& property_list,
|
| - bool show_keyboard_toggle,
|
| - SingleImeBehavior single_ime_behavior) override {
|
| - ImeListView::Update(list, property_list, show_keyboard_toggle,
|
| - single_ime_behavior);
|
| - if (!MaterialDesignController::IsSystemTrayMenuMaterial() &&
|
| - TrayPopupUtils::CanOpenWebUISettings(login_)) {
|
| - AppendSettings();
|
| - }
|
| -
|
| - CreateTitleRow(IDS_ASH_STATUS_TRAY_IME);
|
| - }
|
| -
|
| - private:
|
| - // ImeListView:
|
| - void HandleViewClicked(views::View* view) override {
|
| - ImeListView::HandleViewClicked(view);
|
| - if (view == settings_)
|
| - ShowSettings();
|
| - }
|
| -
|
| - void ResetImeListView() override {
|
| - ImeListView::ResetImeListView();
|
| - settings_button_ = nullptr;
|
| - controlled_setting_icon_ = nullptr;
|
| - }
|
| -
|
| - void HandleButtonPressed(views::Button* sender,
|
| - const ui::Event& event) override {
|
| - ImeListView::HandleButtonPressed(sender, event);
|
| - if (sender == settings_button_)
|
| - ShowSettings();
|
| - }
|
| -
|
| - void CreateExtraTitleRowButtons() override {
|
| - if (MaterialDesignController::IsSystemTrayMenuMaterial()) {
|
| - if (!ime_managed_message_.empty()) {
|
| - controlled_setting_icon_ = TrayPopupUtils::CreateMainImageView();
|
| - controlled_setting_icon_->SetImage(
|
| - gfx::CreateVectorIcon(kSystemMenuBusinessIcon, kMenuIconColor));
|
| - controlled_setting_icon_->SetTooltipText(ime_managed_message_);
|
| - tri_view()->AddView(TriView::Container::END, controlled_setting_icon_);
|
| - }
|
| -
|
| - tri_view()->SetContainerVisible(TriView::Container::END, true);
|
| - settings_button_ =
|
| - CreateSettingsButton(login_, IDS_ASH_STATUS_TRAY_IME_SETTINGS);
|
| - tri_view()->AddView(TriView::Container::END, settings_button_);
|
| - }
|
| - }
|
| -
|
| - void AppendSettings() {
|
| - HoverHighlightView* container = new HoverHighlightView(this);
|
| - container->AddLabel(
|
| - ui::ResourceBundle::GetSharedInstance().GetLocalizedString(
|
| - IDS_ASH_STATUS_TRAY_IME_SETTINGS),
|
| - gfx::ALIGN_LEFT, false /* highlight */);
|
| - AddChildView(container);
|
| - settings_ = container;
|
| - }
|
| -
|
| - void ShowSettings() {
|
| - WmShell::Get()->RecordUserMetricsAction(UMA_STATUS_AREA_IME_SHOW_DETAILED);
|
| - WmShell::Get()->system_tray_controller()->ShowIMESettings();
|
| - if (owner()->system_tray())
|
| - owner()->system_tray()->CloseSystemBubble();
|
| - }
|
| -
|
| - LoginStatus login_;
|
| -
|
| - // Not used in material design.
|
| - views::View* settings_;
|
| -
|
| - // Only used in material design.
|
| - views::Button* settings_button_;
|
| -
|
| - // This icon says that the IMEs are managed by policy.
|
| - views::ImageView* controlled_setting_icon_;
|
| - // If non-empty, a controlled setting icon should be displayed with this
|
| - // string as tooltip.
|
| - base::string16 ime_managed_message_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(IMEDetailedView);
|
| -};
|
| -
|
| -} // namespace tray
|
| -
|
| -TrayIME::TrayIME(SystemTray* system_tray)
|
| - : SystemTrayItem(system_tray, UMA_IME),
|
| - tray_label_(NULL),
|
| - default_(NULL),
|
| - detailed_(NULL),
|
| - keyboard_suppressed_(false),
|
| - is_visible_(true) {
|
| - SystemTrayNotifier* tray_notifier = WmShell::Get()->system_tray_notifier();
|
| - tray_notifier->AddVirtualKeyboardObserver(this);
|
| - tray_notifier->AddAccessibilityObserver(this);
|
| - tray_notifier->AddIMEObserver(this);
|
| -}
|
| -
|
| -TrayIME::~TrayIME() {
|
| - SystemTrayNotifier* tray_notifier = WmShell::Get()->system_tray_notifier();
|
| - tray_notifier->RemoveIMEObserver(this);
|
| - tray_notifier->RemoveAccessibilityObserver(this);
|
| - tray_notifier->RemoveVirtualKeyboardObserver(this);
|
| -}
|
| -
|
| -void TrayIME::OnKeyboardSuppressionChanged(bool suppressed) {
|
| - keyboard_suppressed_ = suppressed;
|
| - Update();
|
| -}
|
| -
|
| -void TrayIME::OnAccessibilityModeChanged(
|
| - AccessibilityNotificationVisibility notify) {
|
| - Update();
|
| -}
|
| -
|
| -void TrayIME::Update() {
|
| - UpdateTrayLabel(current_ime_, ime_list_.size());
|
| - if (default_) {
|
| - default_->SetVisible(ShouldDefaultViewBeVisible());
|
| - default_->UpdateLabel(GetDefaultViewLabel(ime_list_.size() > 1));
|
| - }
|
| - if (detailed_) {
|
| - detailed_->SetImeManagedMessage(ime_managed_message_);
|
| - detailed_->Update(ime_list_, property_list_, ShouldShowKeyboardToggle(),
|
| - GetSingleImeBehavior());
|
| - }
|
| -}
|
| -
|
| -void TrayIME::UpdateTrayLabel(const IMEInfo& current, size_t count) {
|
| - if (tray_label_) {
|
| - bool visible = ShouldShowImeTrayItem(count) && is_visible_;
|
| - tray_label_->SetVisible(visible);
|
| - // Do not change label before hiding because this change is noticeable.
|
| - if (!visible)
|
| - return;
|
| - if (current.third_party) {
|
| - tray_label_->label()->SetText(current.short_name +
|
| - base::UTF8ToUTF16("*"));
|
| - } else {
|
| - tray_label_->label()->SetText(current.short_name);
|
| - }
|
| - SetTrayLabelItemBorder(tray_label_, system_tray()->shelf_alignment());
|
| - tray_label_->Layout();
|
| - }
|
| -}
|
| -
|
| -bool TrayIME::ShouldShowKeyboardToggle() {
|
| - return keyboard_suppressed_ &&
|
| - !WmShell::Get()->accessibility_delegate()->IsVirtualKeyboardEnabled();
|
| -}
|
| -
|
| -base::string16 TrayIME::GetDefaultViewLabel(bool show_ime_label) {
|
| - if (show_ime_label) {
|
| - IMEInfo current;
|
| - WmShell::Get()->system_tray_delegate()->GetCurrentIME(¤t);
|
| - return current.name;
|
| - } else {
|
| - // Display virtual keyboard status instead.
|
| - int id = keyboard::IsKeyboardEnabled()
|
| - ? IDS_ASH_STATUS_TRAY_KEYBOARD_ENABLED
|
| - : IDS_ASH_STATUS_TRAY_KEYBOARD_DISABLED;
|
| - return ui::ResourceBundle::GetSharedInstance().GetLocalizedString(id);
|
| - }
|
| -}
|
| -
|
| -views::View* TrayIME::CreateTrayView(LoginStatus status) {
|
| - CHECK(tray_label_ == NULL);
|
| - tray_label_ = new TrayItemView(this);
|
| - tray_label_->CreateLabel();
|
| - SetupLabelForTray(tray_label_->label());
|
| - // Hide IME tray when it is created, it will be updated when it is notified
|
| - // of the IME refresh event.
|
| - tray_label_->SetVisible(false);
|
| - return tray_label_;
|
| -}
|
| -
|
| -views::View* TrayIME::CreateDefaultView(LoginStatus status) {
|
| - CHECK(default_ == NULL);
|
| - default_ = new tray::IMEDefaultView(
|
| - this, GetDefaultViewLabel(ShouldShowImeTrayItem(ime_list_.size())));
|
| - default_->SetVisible(ShouldDefaultViewBeVisible());
|
| - return default_;
|
| -}
|
| -
|
| -views::View* TrayIME::CreateDetailedView(LoginStatus status) {
|
| - CHECK(detailed_ == NULL);
|
| - detailed_ = new tray::IMEDetailedView(this, status);
|
| - detailed_->SetImeManagedMessage(ime_managed_message_);
|
| - detailed_->Init(ShouldShowKeyboardToggle(), GetSingleImeBehavior());
|
| - return detailed_;
|
| -}
|
| -
|
| -void TrayIME::DestroyTrayView() {
|
| - tray_label_ = NULL;
|
| -}
|
| -
|
| -void TrayIME::DestroyDefaultView() {
|
| - default_ = NULL;
|
| -}
|
| -
|
| -void TrayIME::DestroyDetailedView() {
|
| - detailed_ = NULL;
|
| -}
|
| -
|
| -void TrayIME::UpdateAfterLoginStatusChange(LoginStatus status) {}
|
| -
|
| -void TrayIME::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
|
| - SetTrayLabelItemBorder(tray_label_, alignment);
|
| - tray_label_->Layout();
|
| -}
|
| -
|
| -void TrayIME::OnIMERefresh() {
|
| - // Caches the current ime state.
|
| - SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
|
| - ime_list_.clear();
|
| - property_list_.clear();
|
| - delegate->GetCurrentIME(¤t_ime_);
|
| - delegate->GetAvailableIMEList(&ime_list_);
|
| - delegate->GetCurrentIMEProperties(&property_list_);
|
| - ime_managed_message_ = delegate->GetIMEManagedMessage();
|
| -
|
| - Update();
|
| -}
|
| -
|
| -void TrayIME::OnIMEMenuActivationChanged(bool is_active) {
|
| - is_visible_ = !is_active;
|
| - if (is_visible_)
|
| - OnIMERefresh();
|
| - else
|
| - Update();
|
| -}
|
| -
|
| -bool TrayIME::IsIMEManaged() {
|
| - return !ime_managed_message_.empty();
|
| -}
|
| -
|
| -bool TrayIME::ShouldDefaultViewBeVisible() {
|
| - return is_visible_ &&
|
| - (ShouldShowImeTrayItem(ime_list_.size()) ||
|
| - property_list_.size() > 1 || ShouldShowKeyboardToggle());
|
| -}
|
| -
|
| -bool TrayIME::ShouldShowImeTrayItem(size_t ime_count) {
|
| - // If managed, we want to show the tray icon even if there's only one input
|
| - // method to choose from.
|
| - size_t threshold = IsIMEManaged() ? 1 : 2;
|
| - return ime_count >= threshold;
|
| -}
|
| -
|
| -ImeListView::SingleImeBehavior TrayIME::GetSingleImeBehavior() {
|
| - // If managed, we also want to show a single IME.
|
| - return IsIMEManaged() ? ImeListView::SHOW_SINGLE_IME
|
| - : ImeListView::HIDE_SINGLE_IME;
|
| -}
|
| -
|
| -} // namespace ash
|
|
|