Index: ash/common/system/tray/hover_highlight_view.cc |
diff --git a/ash/common/system/tray/hover_highlight_view.cc b/ash/common/system/tray/hover_highlight_view.cc |
deleted file mode 100644 |
index 7eb36f2776e31b85508761320042235f3058e07a..0000000000000000000000000000000000000000 |
--- a/ash/common/system/tray/hover_highlight_view.cc |
+++ /dev/null |
@@ -1,396 +0,0 @@ |
-// Copyright 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/tray/hover_highlight_view.h" |
- |
-#include "ash/common/material_design/material_design_controller.h" |
-#include "ash/common/system/tray/fixed_sized_image_view.h" |
-#include "ash/common/system/tray/tray_constants.h" |
-#include "ash/common/system/tray/tray_popup_utils.h" |
-#include "ash/common/system/tray/tri_view.h" |
-#include "ash/common/system/tray/view_click_listener.h" |
-#include "ash/resources/vector_icons/vector_icons.h" |
-#include "ui/accessibility/ax_node_data.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "ui/gfx/canvas.h" |
-#include "ui/gfx/font_list.h" |
-#include "ui/gfx/paint_vector_icon.h" |
-#include "ui/resources/grit/ui_resources.h" |
-#include "ui/views/border.h" |
-#include "ui/views/controls/image_view.h" |
-#include "ui/views/controls/label.h" |
-#include "ui/views/layout/box_layout.h" |
-#include "ui/views/layout/fill_layout.h" |
-#include "ui/views/resources/grit/views_resources.h" |
- |
-namespace { |
- |
-const gfx::FontList& GetFontList(bool highlight) { |
- return ui::ResourceBundle::GetSharedInstance().GetFontList( |
- highlight ? ui::ResourceBundle::BoldFont : ui::ResourceBundle::BaseFont); |
-} |
- |
-} // namespace |
- |
-namespace ash { |
- |
-HoverHighlightView::HoverHighlightView(ViewClickListener* listener) |
- : ActionableView(nullptr, TrayPopupInkDropStyle::FILL_BOUNDS), |
- listener_(listener), |
- highlight_color_(kHoverBackgroundColor) { |
- set_notify_enter_exit_on_child(true); |
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) |
- SetInkDropMode(InkDropHostView::InkDropMode::ON); |
-} |
- |
-HoverHighlightView::~HoverHighlightView() {} |
- |
-bool HoverHighlightView::GetTooltipText(const gfx::Point& p, |
- base::string16* tooltip) const { |
- if (tooltip_.empty()) |
- return false; |
- *tooltip = tooltip_; |
- return true; |
-} |
- |
-void HoverHighlightView::AddRightIcon(const gfx::ImageSkia& image, |
- int icon_size) { |
- DCHECK(!right_view_); |
- |
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) { |
- views::ImageView* right_icon = TrayPopupUtils::CreateMainImageView(); |
- right_icon->SetImage(image); |
- AddRightView(right_icon); |
- return; |
- } |
- |
- views::ImageView* right_icon = new FixedSizedImageView(icon_size, icon_size); |
- right_icon->SetImage(image); |
- AddRightView(right_icon); |
-} |
- |
-void HoverHighlightView::AddRightView(views::View* view) { |
- DCHECK(!right_view_); |
- |
- right_view_ = view; |
- right_view_->SetEnabled(enabled()); |
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) { |
- DCHECK(tri_view_); |
- tri_view_->AddView(TriView::Container::END, right_view_); |
- tri_view_->SetContainerVisible(TriView::Container::END, true); |
- return; |
- } |
- DCHECK(box_layout_); |
- AddChildView(right_view_); |
-} |
- |
-// TODO(tdanderson): Ensure all checkable detailed view rows use this |
-// mechanism, and share the code that sets the accessible state for |
-// a checkbox. See crbug.com/652674. |
-void HoverHighlightView::SetRightViewVisible(bool visible) { |
- if (!right_view_) |
- return; |
- |
- right_view_->SetVisible(visible); |
- Layout(); |
-} |
- |
-void HoverHighlightView::AddIconAndLabel(const gfx::ImageSkia& image, |
- const base::string16& text, |
- bool highlight) { |
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) { |
- DoAddIconAndLabelMd(image, text, |
- TrayPopupItemStyle::FontStyle::DETAILED_VIEW_LABEL); |
- return; |
- } |
- |
- box_layout_ = new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 3, |
- kTrayPopupPaddingBetweenItems); |
- SetLayoutManager(box_layout_); |
- DoAddIconAndLabel(image, kTrayPopupDetailsIconWidth, text, highlight); |
-} |
- |
-void HoverHighlightView::AddIconAndLabels(const gfx::ImageSkia& image, |
- const base::string16& text, |
- const base::string16& sub_text) { |
- DCHECK(MaterialDesignController::IsSystemTrayMenuMaterial()); |
- DoAddIconAndLabelsMd(image, text, |
- TrayPopupItemStyle::FontStyle::DETAILED_VIEW_LABEL, |
- sub_text); |
-} |
- |
-void HoverHighlightView::AddIconAndLabelCustomSize(const gfx::ImageSkia& image, |
- const base::string16& text, |
- bool highlight, |
- int icon_size, |
- int indent, |
- int space_between_items) { |
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) { |
- DoAddIconAndLabelMd(image, text, |
- TrayPopupItemStyle::FontStyle::DETAILED_VIEW_LABEL); |
- return; |
- } |
- |
- box_layout_ = new views::BoxLayout(views::BoxLayout::kHorizontal, indent, 0, |
- space_between_items); |
- SetLayoutManager(box_layout_); |
- DoAddIconAndLabel(image, icon_size, text, highlight); |
-} |
- |
-void HoverHighlightView::AddIconAndLabelForDefaultView( |
- const gfx::ImageSkia& image, |
- const base::string16& text, |
- bool highlight) { |
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) { |
- DoAddIconAndLabelMd(image, text, |
- TrayPopupItemStyle::FontStyle::DEFAULT_VIEW_LABEL); |
- return; |
- } |
- |
- // For non-MD, call AddIconAndLabel() so that |box_layout_| is instantiated |
- // and installed as the layout manager. |
- AddIconAndLabel(image, text, highlight); |
-} |
- |
-void HoverHighlightView::DoAddIconAndLabel(const gfx::ImageSkia& image, |
- int icon_size, |
- const base::string16& text, |
- bool highlight) { |
- DCHECK(!MaterialDesignController::IsSystemTrayMenuMaterial()); |
- DCHECK(box_layout_); |
- |
- views::ImageView* image_view = new FixedSizedImageView(icon_size, 0); |
- image_view->SetImage(image); |
- image_view->SetEnabled(enabled()); |
- AddChildView(image_view); |
- |
- text_label_ = new views::Label(text); |
- text_label_->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
- text_label_->SetFontList(GetFontList(highlight)); |
- if (text_default_color_) |
- text_label_->SetEnabledColor(text_default_color_); |
- text_label_->SetEnabled(enabled()); |
- AddChildView(text_label_); |
- box_layout_->SetFlexForView(text_label_, 1); |
- |
- SetAccessibleName(text); |
-} |
- |
-void HoverHighlightView::DoAddIconAndLabelMd( |
- const gfx::ImageSkia& image, |
- const base::string16& text, |
- TrayPopupItemStyle::FontStyle font_style) { |
- DoAddIconAndLabelsMd(image, text, font_style, base::string16()); |
-} |
- |
-void HoverHighlightView::DoAddIconAndLabelsMd( |
- const gfx::ImageSkia& image, |
- const base::string16& text, |
- TrayPopupItemStyle::FontStyle font_style, |
- const base::string16& sub_text) { |
- DCHECK(MaterialDesignController::IsSystemTrayMenuMaterial()); |
- |
- SetLayoutManager(new views::FillLayout); |
- tri_view_ = TrayPopupUtils::CreateDefaultRowView(); |
- AddChildView(tri_view_); |
- |
- left_icon_ = TrayPopupUtils::CreateMainImageView(); |
- left_icon_->SetImage(image); |
- left_icon_->SetEnabled(enabled()); |
- tri_view_->AddView(TriView::Container::START, left_icon_); |
- |
- text_label_ = TrayPopupUtils::CreateDefaultLabel(); |
- text_label_->SetText(text); |
- text_label_->SetEnabled(enabled()); |
- TrayPopupItemStyle style(font_style); |
- style.SetupLabel(text_label_); |
- |
- tri_view_->AddView(TriView::Container::CENTER, text_label_); |
- if (!sub_text.empty()) { |
- sub_text_label_ = TrayPopupUtils::CreateDefaultLabel(); |
- sub_text_label_->SetText(sub_text); |
- TrayPopupItemStyle sub_style(TrayPopupItemStyle::FontStyle::CAPTION); |
- sub_style.set_color_style(TrayPopupItemStyle::ColorStyle::INACTIVE); |
- sub_style.SetupLabel(sub_text_label_); |
- tri_view_->AddView(TriView::Container::CENTER, sub_text_label_); |
- } |
- |
- tri_view_->SetContainerVisible(TriView::Container::END, false); |
- |
- SetAccessibleName(text); |
-} |
- |
-views::Label* HoverHighlightView::AddLabel(const base::string16& text, |
- gfx::HorizontalAlignment alignment, |
- bool highlight) { |
- box_layout_ = new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0); |
- SetLayoutManager(box_layout_); |
- text_label_ = new views::Label(text); |
- int left_margin = kTrayPopupPaddingHorizontal; |
- int right_margin = kTrayPopupPaddingHorizontal; |
- if (alignment != gfx::ALIGN_CENTER) { |
- if (base::i18n::IsRTL()) |
- right_margin += kTrayPopupDetailsLabelExtraLeftMargin; |
- else |
- left_margin += kTrayPopupDetailsLabelExtraLeftMargin; |
- } |
- text_label_->SetBorder( |
- views::CreateEmptyBorder(5, left_margin, 5, right_margin)); |
- text_label_->SetHorizontalAlignment(alignment); |
- text_label_->SetFontList(GetFontList(highlight)); |
- // Do not set alpha value in disable color. It will have issue with elide |
- // blending filter in disabled state for rendering label text color. |
- text_label_->SetDisabledColor(SkColorSetARGB(255, 127, 127, 127)); |
- if (text_default_color_) |
- text_label_->SetEnabledColor(text_default_color_); |
- text_label_->SetEnabled(enabled()); |
- AddChildView(text_label_); |
- box_layout_->SetFlexForView(text_label_, 1); |
- |
- SetAccessibleName(text); |
- return text_label_; |
-} |
- |
-void HoverHighlightView::AddLabelRowMd(const base::string16& text) { |
- DCHECK(MaterialDesignController::IsSystemTrayMenuMaterial()); |
- |
- SetLayoutManager(new views::FillLayout); |
- tri_view_ = TrayPopupUtils::CreateDefaultRowView(); |
- AddChildView(tri_view_); |
- |
- text_label_ = TrayPopupUtils::CreateDefaultLabel(); |
- text_label_->SetText(text); |
- |
- TrayPopupItemStyle style(TrayPopupItemStyle::FontStyle::DETAILED_VIEW_LABEL); |
- style.SetupLabel(text_label_); |
- tri_view_->AddView(TriView::Container::CENTER, text_label_); |
- |
- SetAccessibleName(text); |
-} |
- |
-void HoverHighlightView::SetExpandable(bool expandable) { |
- if (expandable != expandable_) { |
- expandable_ = expandable; |
- InvalidateLayout(); |
- } |
-} |
- |
-void HoverHighlightView::SetHighlight(bool highlight) { |
- // Do not change the font styling for a highlighted row in material design. |
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) |
- return; |
- |
- DCHECK(text_label_); |
- text_label_->SetFontList(GetFontList(highlight)); |
- text_label_->InvalidateLayout(); |
-} |
- |
-void HoverHighlightView::SetAccessiblityState( |
- AccessibilityState accessibility_state) { |
- accessibility_state_ = accessibility_state; |
- if (accessibility_state_ != AccessibilityState::DEFAULT) |
- NotifyAccessibilityEvent(ui::AX_EVENT_CHECKED_STATE_CHANGED, true); |
-} |
- |
-void HoverHighlightView::SetHoverHighlight(bool hover) { |
- // We do not show any hover effects for material design. |
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) |
- return; |
- |
- if (!enabled() && hover) |
- return; |
- if (hover_ == hover) |
- return; |
- hover_ = hover; |
- if (!text_label_) |
- return; |
- if (hover_ && text_highlight_color_) |
- text_label_->SetEnabledColor(text_highlight_color_); |
- if (!hover_ && text_default_color_) |
- text_label_->SetEnabledColor(text_default_color_); |
- SchedulePaint(); |
-} |
- |
-bool HoverHighlightView::PerformAction(const ui::Event& event) { |
- if (!listener_) |
- return false; |
- listener_->OnViewClicked(this); |
- return true; |
-} |
- |
-void HoverHighlightView::GetAccessibleNodeData(ui::AXNodeData* node_data) { |
- ActionableView::GetAccessibleNodeData(node_data); |
- |
- if (accessibility_state_ == AccessibilityState::CHECKED_CHECKBOX || |
- accessibility_state_ == AccessibilityState::UNCHECKED_CHECKBOX) { |
- node_data->role = ui::AX_ROLE_CHECK_BOX; |
- } |
- |
- if (accessibility_state_ == AccessibilityState::CHECKED_CHECKBOX) |
- node_data->AddStateFlag(ui::AX_STATE_CHECKED); |
-} |
- |
-gfx::Size HoverHighlightView::GetPreferredSize() const { |
- gfx::Size size = ActionableView::GetPreferredSize(); |
- |
- if (custom_height_) |
- size.set_height(custom_height_); |
- else if (!expandable_ || size.height() < kTrayPopupItemMinHeight) |
- size.set_height(kTrayPopupItemMinHeight); |
- |
- return size; |
-} |
- |
-int HoverHighlightView::GetHeightForWidth(int width) const { |
- return GetPreferredSize().height(); |
-} |
- |
-void HoverHighlightView::OnMouseEntered(const ui::MouseEvent& event) { |
- SetHoverHighlight(true); |
-} |
- |
-void HoverHighlightView::OnMouseExited(const ui::MouseEvent& event) { |
- SetHoverHighlight(false); |
-} |
- |
-void HoverHighlightView::OnGestureEvent(ui::GestureEvent* event) { |
- if (event->type() == ui::ET_GESTURE_TAP_DOWN) { |
- SetHoverHighlight(true); |
- } else if (event->type() == ui::ET_GESTURE_TAP_CANCEL || |
- event->type() == ui::ET_GESTURE_TAP) { |
- SetHoverHighlight(false); |
- } |
- ActionableView::OnGestureEvent(event); |
-} |
- |
-void HoverHighlightView::OnBoundsChanged(const gfx::Rect& previous_bounds) { |
- SetHoverHighlight(IsMouseHovered()); |
-} |
- |
-void HoverHighlightView::OnEnabledChanged() { |
- if (MaterialDesignController::IsSystemTrayMenuMaterial()) { |
- if (left_icon_) |
- left_icon_->SetEnabled(enabled()); |
- if (text_label_) |
- text_label_->SetEnabled(enabled()); |
- if (right_view_) |
- right_view_->SetEnabled(enabled()); |
- } else { |
- if (!enabled()) |
- SetHoverHighlight(false); |
- for (int i = 0; i < child_count(); ++i) |
- child_at(i)->SetEnabled(enabled()); |
- } |
-} |
- |
-void HoverHighlightView::OnPaintBackground(gfx::Canvas* canvas) { |
- canvas->DrawColor(hover_ ? highlight_color_ : default_color_); |
-} |
- |
-void HoverHighlightView::OnFocus() { |
- ScrollRectToVisible(gfx::Rect(gfx::Point(), size())); |
- ActionableView::OnFocus(); |
-} |
- |
-} // namespace ash |