| // Copyright 2018 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/app_menu/notification_menu_header_view.h" |
| |
| #include "ash/public/cpp/app_menu_constants.h" |
| #include "base/strings/string_number_conversions.h" |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/strings/grit/ui_strings.h" |
| #include "ui/views/border.h" |
| #include "ui/views/controls/label.h" |
| #include "ui/views/controls/menu/menu_config.h" |
| |
| namespace ash { |
| |
| namespace { |
| |
| // Color of text in NotificationMenuHeaderView. |
| constexpr SkColor kNotificationHeaderTextColor = |
| SkColorSetRGB(0X1A, 0x73, 0xE8); |
| |
| // Line height of all text in the NotificationMenuHeaderView in dips. |
| constexpr int kNotificationHeaderLineHeight = 20; |
| |
| } // namespace |
| |
| NotificationMenuHeaderView::NotificationMenuHeaderView() { |
| SetBorder(views::CreateEmptyBorder(gfx::Insets( |
| kNotificationVerticalPadding, kNotificationHorizontalPadding))); |
| |
| notification_title_ = new views::Label( |
| base::string16(l10n_util::GetStringUTF16( |
| IDS_MESSAGE_CENTER_NOTIFICATION_ACCESSIBLE_NAME_PLURAL)), |
| {views::Label::GetDefaultFontList().DeriveWithSizeDelta(1)}); |
| notification_title_->SetEnabledColor(kNotificationHeaderTextColor); |
| notification_title_->SetLineHeight(kNotificationHeaderLineHeight); |
| AddChildView(notification_title_); |
| |
| counter_ = new views::Label( |
| base::string16(), |
| {views::Label::GetDefaultFontList().DeriveWithSizeDelta(1)}); |
| counter_->SetEnabledColor(kNotificationHeaderTextColor); |
| counter_->SetLineHeight(kNotificationHeaderLineHeight); |
| AddChildView(counter_); |
| } |
| |
| NotificationMenuHeaderView::~NotificationMenuHeaderView() = default; |
| |
| void NotificationMenuHeaderView::UpdateCounter(int number_of_notifications) { |
| if (number_of_notifications_ == number_of_notifications) |
| return; |
| |
| number_of_notifications_ = number_of_notifications; |
| |
| counter_->SetText(base::IntToString16(number_of_notifications_)); |
| } |
| |
| gfx::Size NotificationMenuHeaderView::CalculatePreferredSize() const { |
| return gfx::Size( |
| views::MenuConfig::instance().touchable_menu_width, |
| GetInsets().height() + notification_title_->GetPreferredSize().height()); |
| } |
| |
| void NotificationMenuHeaderView::Layout() { |
| const gfx::Insets insets = GetInsets(); |
| |
| const gfx::Size notification_title_preferred_size = |
| notification_title_->GetPreferredSize(); |
| notification_title_->SetBounds(insets.left(), insets.top(), |
| notification_title_preferred_size.width(), |
| notification_title_preferred_size.height()); |
| |
| const gfx::Size counter_preferred_size = counter_->GetPreferredSize(); |
| counter_->SetBounds(width() - counter_preferred_size.width() - insets.right(), |
| insets.top(), counter_preferred_size.width(), |
| counter_preferred_size.height()); |
| } |
| |
| } // namespace ash |