Chromium Code Reviews| Index: ash/system/tray/tray_info_label.cc |
| diff --git a/ash/system/tray/tray_info_label.cc b/ash/system/tray/tray_info_label.cc |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..2efbd6e0ac1919aa8aa1bfe75ab5671791b8df4e |
| --- /dev/null |
| +++ b/ash/system/tray/tray_info_label.cc |
| @@ -0,0 +1,77 @@ |
| +// Copyright (c) 2017 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/tray/tray_info_label.h" |
| + |
| +#include "ash/system/tray/tray_popup_item_style.h" |
| +#include "ash/system/tray/tray_popup_utils.h" |
| +#include "ui/accessibility/ax_node_data.h" |
| +#include "ui/base/l10n/l10n_util.h" |
| +#include "ui/views/layout/fill_layout.h" |
| + |
| +namespace ash { |
| + |
| +TrayInfoLabel::TrayInfoLabel(TrayInfoLabel::Delegate* delegate, int message_id) |
| + : ActionableView(nullptr /*owner*/, TrayPopupInkDropStyle::FILL_BOUNDS), |
|
Kyle Horimoto
2017/07/12 22:45:58
nit: Spaces at beginning/end of comment: /* owner
lesliewatkins
2017/07/13 22:12:47
Done.
|
| + label_(TrayPopupUtils::CreateDefaultLabel()), |
| + message_id_(message_id), |
| + delegate_(delegate) { |
| + SetLayoutManager(new views::FillLayout); |
| + |
| + TriView* tri_view = TrayPopupUtils::CreateMultiTargetRowView(); |
| + tri_view->SetInsets(gfx::Insets(0, |
| + kMenuExtraMarginFromLeftEdge + |
| + kTrayPopupPaddingHorizontal - |
| + kTrayPopupLabelHorizontalPadding, |
| + 0, kTrayPopupPaddingHorizontal)); |
| + tri_view->SetContainerVisible(TriView::Container::START, false); |
| + tri_view->SetContainerVisible(TriView::Container::END, false); |
| + tri_view->AddView(TriView::Container::CENTER, label_); |
| + |
| + AddChildView(tri_view); |
| + |
| + Update(message_id); |
| +} |
| + |
| +void TrayInfoLabel::Update(int message_id) { |
| + message_id_ = message_id; |
| + |
| + TrayPopupItemStyle::FontStyle font_style; |
| + |
| + if (IsClickable()) { |
| + SetInkDropMode(InkDropHostView::InkDropMode::ON); |
| + font_style = TrayPopupItemStyle::FontStyle::CLICKABLE_SYSTEM_INFO; |
| + } else { |
| + SetInkDropMode(InkDropHostView::InkDropMode::OFF); |
| + font_style = TrayPopupItemStyle::FontStyle::SYSTEM_INFO; |
| + } |
| + |
| + const TrayPopupItemStyle style(font_style); |
| + style.SetupLabel(label_); |
| + |
| + label_->SetText(l10n_util::GetStringUTF16(message_id)); |
| +} |
| + |
| +bool TrayInfoLabel::PerformAction(const ui::Event& event) { |
| + if (IsClickable()) { |
| + delegate_->OnLabelClicked(message_id_); |
| + return true; |
| + } |
| + return false; |
| +} |
| + |
| +void TrayInfoLabel::GetAccessibleNodeData(ui::AXNodeData* node_data) { |
| + if (IsClickable()) |
| + node_data->role = ui::AX_ROLE_BUTTON; |
| + else |
| + node_data->role = ui::AX_ROLE_LABEL_TEXT; |
| +} |
| + |
| +bool TrayInfoLabel::IsClickable() { |
| + if (delegate_) |
| + return delegate_->LabelIsClickable(message_id_); |
| + return false; |
| +} |
| + |
| +} // namespace ash |