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

Unified Diff: ash/system/ime/tray_ime.cc

Issue 843603004: Moves smart deploy UI into the IME tray. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Unsplit. Remove IME tray in Linux. Created 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/system/ime/tray_ime.h ('k') | ash/system/ime/tray_ime_chromeos.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/system/ime/tray_ime.cc
diff --git a/ash/system/ime/tray_ime.cc b/ash/system/ime/tray_ime.cc
deleted file mode 100644
index 303b4fa0a1fa2b26e65ddb03f65c78d275735bf2..0000000000000000000000000000000000000000
--- a/ash/system/ime/tray_ime.cc
+++ /dev/null
@@ -1,308 +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/system/ime/tray_ime.h"
-
-#include <vector>
-
-#include "ash/metrics/user_metrics_recorder.h"
-#include "ash/root_window_controller.h"
-#include "ash/session/session_state_delegate.h"
-#include "ash/shelf/shelf_widget.h"
-#include "ash/shell.h"
-#include "ash/system/tray/hover_highlight_view.h"
-#include "ash/system/tray/system_tray.h"
-#include "ash/system/tray/system_tray_delegate.h"
-#include "ash/system/tray/system_tray_notifier.h"
-#include "ash/system/tray/tray_constants.h"
-#include "ash/system/tray/tray_details_view.h"
-#include "ash/system/tray/tray_item_more.h"
-#include "ash/system/tray/tray_item_view.h"
-#include "ash/system/tray/tray_utils.h"
-#include "base/logging.h"
-#include "base/strings/utf_string_conversions.h"
-#include "grit/ash_resources.h"
-#include "grit/ash_strings.h"
-#include "ui/accessibility/ax_enums.h"
-#include "ui/accessibility/ax_view_state.h"
-#include "ui/base/resource/resource_bundle.h"
-#include "ui/gfx/font.h"
-#include "ui/gfx/image/image.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 whetehr
-// 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 ? gfx::Font::BOLD : gfx::Font::NORMAL);
- }
-
- ~SelectableHoverHighlightView() override {}
-
- protected:
- // Overridden from views::View.
- void GetAccessibleState(ui::AXViewState* state) override {
- HoverHighlightView::GetAccessibleState(state);
- state->role = ui::AX_ROLE_CHECK_BOX;
- if (selected_)
- state->AddStateFlag(ui::AX_STATE_CHECKED);
- }
-
- private:
- bool selected_;
-
- DISALLOW_COPY_AND_ASSIGN(SelectableHoverHighlightView);
-};
-
-class IMEDefaultView : public TrayItemMore {
- public:
- explicit IMEDefaultView(SystemTrayItem* owner)
- : TrayItemMore(owner, true) {
- ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance();
-
- SetImage(bundle.GetImageNamed(
- IDR_AURA_UBER_TRAY_IME).ToImageSkia());
-
- IMEInfo info;
- Shell::GetInstance()->system_tray_delegate()->GetCurrentIME(&info);
- UpdateLabel(info);
- }
-
- ~IMEDefaultView() override {}
-
- void UpdateLabel(const IMEInfo& info) {
- SetLabel(info.name);
- SetAccessibleName(info.name);
- }
-
- private:
- DISALLOW_COPY_AND_ASSIGN(IMEDefaultView);
-};
-
-class IMEDetailedView : public TrayDetailsView,
- public ViewClickListener {
- public:
- IMEDetailedView(SystemTrayItem* owner, user::LoginStatus login)
- : TrayDetailsView(owner),
- login_(login) {
- SystemTrayDelegate* delegate = Shell::GetInstance()->system_tray_delegate();
- IMEInfoList list;
- delegate->GetAvailableIMEList(&list);
- IMEPropertyInfoList property_list;
- delegate->GetCurrentIMEProperties(&property_list);
- Update(list, property_list);
- }
-
- ~IMEDetailedView() override {}
-
- void Update(const IMEInfoList& list,
- const IMEPropertyInfoList& property_list) {
- Reset();
-
- AppendIMEList(list);
- if (!property_list.empty())
- AppendIMEProperties(property_list);
- bool userAddingRunning = ash::Shell::GetInstance()
- ->session_state_delegate()
- ->IsInSecondaryLoginScreen();
-
- if (login_ != user::LOGGED_IN_NONE && login_ != user::LOGGED_IN_LOCKED &&
- !userAddingRunning)
- AppendSettings();
- AppendHeaderEntry();
-
- Layout();
- SchedulePaint();
- }
-
- private:
- void AppendHeaderEntry() {
- CreateSpecialRow(IDS_ASH_STATUS_TRAY_IME, this);
- }
-
- void AppendIMEList(const IMEInfoList& list) {
- ime_map_.clear();
- CreateScrollableList();
- for (size_t i = 0; i < list.size(); i++) {
- HoverHighlightView* container = new SelectableHoverHighlightView(
- this, list[i].name, list[i].selected);
- scroll_content()->AddChildView(container);
- ime_map_[container] = list[i].id;
- }
- }
-
- void AppendIMEProperties(const IMEPropertyInfoList& property_list) {
- property_map_.clear();
- for (size_t i = 0; i < property_list.size(); i++) {
- HoverHighlightView* container = new SelectableHoverHighlightView(
- this, property_list[i].name, property_list[i].selected);
- if (i == 0)
- container->SetBorder(views::Border::CreateSolidSidedBorder(
- 1, 0, 0, 0, kBorderLightColor));
- scroll_content()->AddChildView(container);
- property_map_[container] = property_list[i].key;
- }
- }
-
- void AppendSettings() {
- HoverHighlightView* container = new HoverHighlightView(this);
- container->AddLabel(
- ui::ResourceBundle::GetSharedInstance().GetLocalizedString(
- IDS_ASH_STATUS_TRAY_IME_SETTINGS),
- gfx::ALIGN_LEFT,
- gfx::Font::NORMAL);
- AddChildView(container);
- settings_ = container;
- }
-
- // Overridden from ViewClickListener.
- void OnViewClicked(views::View* sender) override {
- SystemTrayDelegate* delegate = Shell::GetInstance()->system_tray_delegate();
- if (sender == footer()->content()) {
- TransitionToDefaultView();
- } else if (sender == settings_) {
- Shell::GetInstance()->metrics()->RecordUserMetricsAction(
- ash::UMA_STATUS_AREA_IME_SHOW_DETAILED);
- delegate->ShowIMESettings();
- } else {
- std::map<views::View*, std::string>::const_iterator ime_find;
- ime_find = ime_map_.find(sender);
- if (ime_find != ime_map_.end()) {
- Shell::GetInstance()->metrics()->RecordUserMetricsAction(
- ash::UMA_STATUS_AREA_IME_SWITCH_MODE);
- std::string ime_id = ime_find->second;
- delegate->SwitchIME(ime_id);
- GetWidget()->Close();
- } else {
- std::map<views::View*, std::string>::const_iterator prop_find;
- prop_find = property_map_.find(sender);
- if (prop_find != property_map_.end()) {
- const std::string key = prop_find->second;
- delegate->ActivateIMEProperty(key);
- GetWidget()->Close();
- }
- }
- }
- }
-
- user::LoginStatus login_;
-
- std::map<views::View*, std::string> ime_map_;
- std::map<views::View*, std::string> property_map_;
- views::View* settings_;
-
- DISALLOW_COPY_AND_ASSIGN(IMEDetailedView);
-};
-
-} // namespace tray
-
-TrayIME::TrayIME(SystemTray* system_tray)
- : SystemTrayItem(system_tray),
- tray_label_(NULL),
- default_(NULL),
- detailed_(NULL) {
- Shell::GetInstance()->system_tray_notifier()->AddIMEObserver(this);
-}
-
-TrayIME::~TrayIME() {
- Shell::GetInstance()->system_tray_notifier()->RemoveIMEObserver(this);
-}
-
-void TrayIME::UpdateTrayLabel(const IMEInfo& current, size_t count) {
- if (tray_label_) {
- bool visible = count > 1;
- 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();
- }
-}
-
-views::View* TrayIME::CreateTrayView(user::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
- // for IME refresh event.
- tray_label_->SetVisible(false);
- return tray_label_;
-}
-
-views::View* TrayIME::CreateDefaultView(user::LoginStatus status) {
- SystemTrayDelegate* delegate = Shell::GetInstance()->system_tray_delegate();
- IMEInfoList list;
- IMEPropertyInfoList property_list;
- delegate->GetAvailableIMEList(&list);
- delegate->GetCurrentIMEProperties(&property_list);
- if (list.size() <= 1 && property_list.size() <= 1)
- return NULL;
- CHECK(default_ == NULL);
- default_ = new tray::IMEDefaultView(this);
- return default_;
-}
-
-views::View* TrayIME::CreateDetailedView(user::LoginStatus status) {
- CHECK(detailed_ == NULL);
- detailed_ = new tray::IMEDetailedView(this, status);
- return detailed_;
-}
-
-void TrayIME::DestroyTrayView() {
- tray_label_ = NULL;
-}
-
-void TrayIME::DestroyDefaultView() {
- default_ = NULL;
-}
-
-void TrayIME::DestroyDetailedView() {
- detailed_ = NULL;
-}
-
-void TrayIME::UpdateAfterLoginStatusChange(user::LoginStatus status) {
-}
-
-void TrayIME::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
- SetTrayLabelItemBorder(tray_label_, alignment);
- tray_label_->Layout();
-}
-
-void TrayIME::OnIMERefresh() {
- SystemTrayDelegate* delegate = Shell::GetInstance()->system_tray_delegate();
- IMEInfoList list;
- IMEInfo current;
- IMEPropertyInfoList property_list;
- delegate->GetCurrentIME(&current);
- delegate->GetAvailableIMEList(&list);
- delegate->GetCurrentIMEProperties(&property_list);
-
- UpdateTrayLabel(current, list.size());
-
- if (default_)
- default_->UpdateLabel(current);
- if (detailed_)
- detailed_->Update(list, property_list);
-}
-
-} // namespace ash
« no previous file with comments | « ash/system/ime/tray_ime.h ('k') | ash/system/ime/tray_ime_chromeos.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698