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

Unified Diff: ash/common/system/chromeos/ime_menu/ime_menu_tray.cc

Issue 2480203002: ui: Cleanup class/struct forward declarations (Closed)
Patch Set: Sync CL to position 430550 Created 4 years, 1 month 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
Index: ash/common/system/chromeos/ime_menu/ime_menu_tray.cc
diff --git a/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc b/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc
index c8181ac4a2fdcfa815772de1bc0de55eec39c866..7eea7e751c6a192668d34d3edfeef7bd9e439751 100644
--- a/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc
+++ b/ash/common/system/chromeos/ime_menu/ime_menu_tray.cc
@@ -36,6 +36,7 @@
#include "ui/gfx/vector_icons_public.h"
#include "ui/keyboard/keyboard_controller.h"
#include "ui/keyboard/keyboard_util.h"
+#include "ui/views/controls/button/button.h"
#include "ui/views/controls/label.h"
#include "ui/views/controls/separator.h"
#include "ui/views/layout/box_layout.h"
@@ -49,6 +50,8 @@ namespace {
// border in dp.
// TODO(tdanderson): Move this to tray_constants.
const int kButtonInsideBorderSpacing = 4;
+const int kMenuTitlePadding = 1;
+const int kMenuTitleItemPadding = 2;
// Returns the height range of ImeListView.
gfx::Range GetImeListViewRange() {
@@ -64,6 +67,13 @@ void ShowIMESettings() {
WmShell::Get()->system_tray_controller()->ShowIMESettings();
}
+// Returns true if the current screen is login or lock screen.
+bool IsInLoginOrLockScreen() {
+ LoginStatus login =
+ WmShell::Get()->system_tray_delegate()->GetUserLoginStatus();
+ return !CanOpenWebUISettings(login);
+}
+
class ImeMenuLabel : public views::Label {
public:
ImeMenuLabel() {}
@@ -90,32 +100,48 @@ SystemMenuButton* CreateImeMenuButton(views::ButtonListener* listener,
new SystemMenuButton(listener, SystemMenuButton::InkDropStyle::SQUARE,
icon, accessible_name_id);
if (!MaterialDesignController::IsShelfMaterial()) {
- button->SetBorder(views::Border::CreateSolidSidedBorder(
- 0, 0, 0, right_border, kBorderDarkColor));
+ button->SetBorder(
+ views::CreateSolidSidedBorder(0, 0, 0, right_border, kBorderDarkColor));
}
return button;
}
// The view that contains IME menu title in the material design.
-class ImeTitleView : public views::View {
+class ImeTitleView : public views::View, public views::ButtonListener {
public:
- ImeTitleView() {
- auto* box_layout = new views::BoxLayout(views::BoxLayout::kHorizontal, 0,
- kMenuSeparatorVerticalPadding, 0);
+ explicit ImeTitleView(bool show_settings_button) : settings_button_(nullptr) {
+ auto* box_layout =
+ new views::BoxLayout(views::BoxLayout::kHorizontal, kMenuTitlePadding,
+ kMenuTitlePadding, kMenuTitleItemPadding);
SetLayoutManager(box_layout);
-
- views::Label* title_label =
+ title_label_ =
new views::Label(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_IME));
- const int title_padding =
- kMenuSeparatorVerticalPadding + (kMenuButtonSize - kMenuIconSize) / 2;
- title_label->SetBorder(
- views::Border::CreateEmptyBorder(0, title_padding, 0, 0));
- title_label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
- TrayPopupItemStyle style(GetNativeTheme(),
- TrayPopupItemStyle::FontStyle::TITLE);
- style.SetupLabel(title_label);
- AddChildView(title_label);
- box_layout->SetFlexForView(title_label, 1);
+ const int title_padding = (kMenuButtonSize - kMenuIconSize) / 2;
+ title_label_->SetBorder(views::CreateEmptyBorder(0, title_padding, 0, 0));
+ title_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
+ AddChildView(title_label_);
+ box_layout->SetFlexForView(title_label_, 1);
+
+ if (show_settings_button) {
+ settings_button_ = CreateImeMenuButton(
+ this, kSystemMenuSettingsIcon, IDS_ASH_STATUS_TRAY_IME_SETTINGS, 0);
+ settings_button_->SetBorder(
+ views::CreateEmptyBorder(gfx::Insets(title_padding, title_padding)));
+ if (IsInLoginOrLockScreen())
+ settings_button_->SetState(views::Button::STATE_DISABLED);
+ AddChildView(settings_button_);
+ }
+ }
+
+ // views::View:
+ void OnNativeThemeChanged(const ui::NativeTheme* theme) override {
+ UpdateStyle();
+ }
+
+ // views::ButtonListener:
+ void ButtonPressed(views::Button* sender, const ui::Event& event) override {
+ if (sender == settings_button_)
+ ShowIMESettings();
}
~ImeTitleView() override {}
@@ -130,6 +156,19 @@ class ImeTitleView : public views::View {
}
private:
+ // Updates the style of |title_label_| based on the current native theme.
+ void UpdateStyle() {
+ TrayPopupItemStyle style(GetNativeTheme(),
+ TrayPopupItemStyle::FontStyle::TITLE);
+ style.SetupLabel(title_label_);
+ }
+
+ views::Label* title_label_;
+
+ // Settings button that is only used in material design, and only if the
+ // emoji, handwriting and voice buttons are not available.
+ SystemMenuButton* settings_button_;
+
DISALLOW_COPY_AND_ASSIGN(ImeTitleView);
};
@@ -146,14 +185,14 @@ class ImeButtonsView : public views::View,
: ime_menu_tray_(ime_menu_tray) {
DCHECK(ime_menu_tray_);
- SetBorder(
- views::Border::CreateSolidSidedBorder(1, 0, 0, 0, kBorderDarkColor));
+ SetBorder(views::CreateSolidSidedBorder(1, 0, 0, 0, kBorderDarkColor));
// If there's only one settings button, the bottom should be a label with
// normal background. Otherwise, show button icons with header background.
if (show_settings_button && !show_emoji_button &&
!show_handwriting_button && !show_voice_button) {
- ShowOneSettingButton();
+ if (!MaterialDesignController::IsSystemTrayMenuMaterial())
+ ShowOneSettingButton();
} else {
ShowButtons(show_emoji_button, show_handwriting_button, show_voice_button,
show_settings_button);
@@ -211,6 +250,8 @@ class ImeButtonsView : public views::View,
ui::ResourceBundle::GetSharedInstance().GetLocalizedString(
IDS_ASH_STATUS_TRAY_IME_SETTINGS),
gfx::ALIGN_LEFT, false /* highlight */);
+ if (IsInLoginOrLockScreen())
+ one_settings_button_view_->SetState(views::Button::STATE_DISABLED);
AddChildView(one_settings_button_view_);
}
@@ -252,7 +293,6 @@ class ImeButtonsView : public views::View,
}
if (show_settings_button) {
- // TODO(tdanderson): update this settings icon.
settings_button_ = CreateImeMenuButton(
this, kSystemMenuSettingsIcon, IDS_ASH_STATUS_TRAY_IME_SETTINGS, 0);
AddChildView(settings_button_);
@@ -306,14 +346,15 @@ void ImeMenuTray::ShowImeMenuBubble() {
// In the material design, we will add a title item with a separator on the
// top of the IME menu.
if (MaterialDesignController::IsSystemTrayMenuMaterial()) {
- ImeTitleView* title_view = new ImeTitleView();
+ ImeTitleView* title_view =
+ new ImeTitleView(!ShouldShowEmojiHandwritingVoiceButtons());
bubble_view->AddChildView(title_view);
views::Separator* separator =
new views::Separator(views::Separator::HORIZONTAL);
separator->SetColor(kBorderLightColor);
separator->SetPreferredSize(kSeparatorWidth);
- separator->SetBorder(views::Border::CreateEmptyBorder(
- 0, 0, kMenuSeparatorVerticalPadding, 0));
+ separator->SetBorder(
+ views::CreateEmptyBorder(0, 0, kMenuSeparatorVerticalPadding, 0));
bubble_view->AddChildView(separator);
}
@@ -333,17 +374,15 @@ void ImeMenuTray::ShowImeMenuBubble() {
}
bubble_view->AddChildView(ime_list_view_);
- // Adds IME buttons to the bubble if needed.
- LoginStatus login =
- WmShell::Get()->system_tray_delegate()->GetUserLoginStatus();
- if (login != LoginStatus::NOT_LOGGED_IN && login != LoginStatus::LOCKED &&
- !WmShell::Get()->GetSessionStateDelegate()->IsInSecondaryLoginScreen()) {
- if (InputMethodManager::Get() &&
- InputMethodManager::Get()->IsEmojiHandwritingVoiceOnImeMenuEnabled() &&
- !current_ime_.third_party) {
+ // The bottom view that contains buttons are not supported in login/lock
+ // screen.
+ if (!IsInLoginOrLockScreen()) {
+ if (ShouldShowEmojiHandwritingVoiceButtons()) {
bubble_view->AddChildView(
new ImeButtonsView(this, true, true, true, true));
- } else {
+ } else if (!MaterialDesignController::IsSystemTrayMenuMaterial()) {
+ // For MD, we don't need |ImeButtonsView| as the settings button will be
+ // shown in the title row.
bubble_view->AddChildView(
new ImeButtonsView(this, false, false, false, true));
}
@@ -403,10 +442,16 @@ bool ImeMenuTray::ShouldBlockShelfAutoHide() const {
return should_block_shelf_auto_hide_;
}
+bool ImeMenuTray::ShouldShowEmojiHandwritingVoiceButtons() const {
+ return InputMethodManager::Get() &&
+ InputMethodManager::Get()->IsEmojiHandwritingVoiceOnImeMenuEnabled() &&
+ !current_ime_.third_party;
+}
+
void ImeMenuTray::SetShelfAlignment(ShelfAlignment alignment) {
TrayBackgroundView::SetShelfAlignment(alignment);
if (!MaterialDesignController::IsShelfMaterial())
- tray_container()->SetBorder(views::Border::NullBorder());
+ tray_container()->SetBorder(views::NullBorder());
}
base::string16 ImeMenuTray::GetAccessibleNameForTray() {
« no previous file with comments | « ash/common/system/chromeos/ime_menu/ime_menu_tray.h ('k') | ash/common/system/chromeos/network/network_list_md.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698