| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2012 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 | |
| 5 #include "ash/common/system/tray/tray_item_more.h" | |
| 6 | |
| 7 #include "ash/common/system/tray/system_tray_item.h" | |
| 8 #include "ash/common/system/tray/tray_constants.h" | |
| 9 #include "ash/common/system/tray/tray_popup_item_style.h" | |
| 10 #include "ash/common/system/tray/tray_popup_utils.h" | |
| 11 #include "ash/common/system/tray/tri_view.h" | |
| 12 #include "base/memory/ptr_util.h" | |
| 13 #include "ui/accessibility/ax_node_data.h" | |
| 14 #include "ui/gfx/image/image.h" | |
| 15 #include "ui/views/controls/image_view.h" | |
| 16 #include "ui/views/controls/label.h" | |
| 17 #include "ui/views/layout/fill_layout.h" | |
| 18 | |
| 19 namespace ash { | |
| 20 | |
| 21 TrayItemMore::TrayItemMore(SystemTrayItem* owner) | |
| 22 : ActionableView(owner, TrayPopupInkDropStyle::FILL_BOUNDS), | |
| 23 tri_view_(TrayPopupUtils::CreateDefaultRowView()), | |
| 24 icon_(TrayPopupUtils::CreateMainImageView()), | |
| 25 label_(TrayPopupUtils::CreateDefaultLabel()), | |
| 26 more_(TrayPopupUtils::CreateMoreImageView()) { | |
| 27 AddChildView(tri_view_); | |
| 28 SetLayoutManager(new views::FillLayout); | |
| 29 | |
| 30 tri_view_->AddView(TriView::Container::START, icon_); | |
| 31 tri_view_->AddView(TriView::Container::CENTER, label_); | |
| 32 tri_view_->AddView(TriView::Container::END, more_); | |
| 33 | |
| 34 SetInkDropMode(InkDropHostView::InkDropMode::ON); | |
| 35 } | |
| 36 | |
| 37 TrayItemMore::~TrayItemMore() {} | |
| 38 | |
| 39 void TrayItemMore::SetLabel(const base::string16& label) { | |
| 40 label_->SetText(label); | |
| 41 Layout(); | |
| 42 SchedulePaint(); | |
| 43 } | |
| 44 | |
| 45 void TrayItemMore::SetImage(const gfx::ImageSkia& image_skia) { | |
| 46 icon_->SetImage(image_skia); | |
| 47 SchedulePaint(); | |
| 48 } | |
| 49 | |
| 50 void TrayItemMore::SetAccessibleName(const base::string16& name) { | |
| 51 accessible_name_ = name; | |
| 52 } | |
| 53 | |
| 54 std::unique_ptr<TrayPopupItemStyle> TrayItemMore::CreateStyle() const { | |
| 55 std::unique_ptr<TrayPopupItemStyle> style = HandleCreateStyle(); | |
| 56 if (!enabled()) | |
| 57 style->set_color_style(TrayPopupItemStyle::ColorStyle::DISABLED); | |
| 58 return style; | |
| 59 } | |
| 60 | |
| 61 std::unique_ptr<TrayPopupItemStyle> TrayItemMore::HandleCreateStyle() const { | |
| 62 return base::MakeUnique<TrayPopupItemStyle>( | |
| 63 TrayPopupItemStyle::FontStyle::DEFAULT_VIEW_LABEL); | |
| 64 } | |
| 65 | |
| 66 void TrayItemMore::UpdateStyle() { | |
| 67 std::unique_ptr<TrayPopupItemStyle> style = CreateStyle(); | |
| 68 style->SetupLabel(label_); | |
| 69 } | |
| 70 | |
| 71 bool TrayItemMore::PerformAction(const ui::Event& event) { | |
| 72 owner()->TransitionDetailedView(); | |
| 73 return true; | |
| 74 } | |
| 75 | |
| 76 void TrayItemMore::GetAccessibleNodeData(ui::AXNodeData* node_data) { | |
| 77 ActionableView::GetAccessibleNodeData(node_data); | |
| 78 if (!accessible_name_.empty()) | |
| 79 node_data->SetName(accessible_name_); | |
| 80 } | |
| 81 | |
| 82 void TrayItemMore::OnEnabledChanged() { | |
| 83 ActionableView::OnEnabledChanged(); | |
| 84 tri_view_->SetContainerVisible(TriView::Container::END, enabled()); | |
| 85 UpdateStyle(); | |
| 86 } | |
| 87 | |
| 88 void TrayItemMore::OnNativeThemeChanged(const ui::NativeTheme* theme) { | |
| 89 ActionableView::OnNativeThemeChanged(theme); | |
| 90 UpdateStyle(); | |
| 91 } | |
| 92 | |
| 93 } // namespace ash | |
| OLD | NEW |