Chromium Code Reviews| Index: ui/message_center/views/notification_view_md.cc |
| diff --git a/ui/message_center/views/notification_view_md.cc b/ui/message_center/views/notification_view_md.cc |
| index 354ca980345b5eb817eb24596ab60e4f1d18d02e..4b26171aa93ad8bc1551dcc1ff5bfda929777a37 100644 |
| --- a/ui/message_center/views/notification_view_md.cc |
| +++ b/ui/message_center/views/notification_view_md.cc |
| @@ -6,7 +6,9 @@ |
| #include <stddef.h> |
| +#include "base/strings/string_number_conversions.h" |
| #include "base/strings/string_util.h" |
| +#include "base/strings/utf_string_conversions.h" |
| #include "ui/base/cursor/cursor.h" |
| #include "ui/base/l10n/l10n_util.h" |
| #include "ui/gfx/geometry/size.h" |
| @@ -96,15 +98,26 @@ const gfx::ImageSkia GetProductIcon() { |
| // message next to each other within a single column. |
| class ItemView : public views::View { |
| public: |
| - explicit ItemView(const message_center::NotificationItem& item); |
| + explicit ItemView(const message_center::NotificationItem& item, |
| + int num_remaining); |
| ~ItemView() override; |
| + void SetRemainingCountVisible(bool visible); |
| + |
| private: |
| DISALLOW_COPY_AND_ASSIGN(ItemView); |
|
yoshiki
2017/06/21 07:32:12
please place this at the last.
tetsui
2017/06/22 07:25:23
Done.
|
| + |
| + views::View* container_; |
| + views::Label* remaining_count_; |
| }; |
| -ItemView::ItemView(const message_center::NotificationItem& item) { |
| - SetLayoutManager( |
| +ItemView::ItemView(const message_center::NotificationItem& item, |
| + int num_remaining) { |
| + container_ = new views::View; |
| + AddChildView(container_); |
| + SetLayoutManager(new views::FillLayout()); |
| + |
| + container_->SetLayoutManager( |
| new views::BoxLayout(views::BoxLayout::kHorizontal, gfx::Insets(), |
| message_center::kItemTitleToMessagePadding)); |
| @@ -113,18 +126,33 @@ ItemView::ItemView(const message_center::NotificationItem& item) { |
| title->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| title->SetEnabledColor(message_center::kRegularTextColor); |
| title->SetBackgroundColor(message_center::kDimTextBackgroundColor); |
| - AddChildView(title); |
| + container_->AddChildView(title); |
| views::Label* message = new views::Label(item.message); |
| message->set_collapse_when_hidden(true); |
| message->SetHorizontalAlignment(gfx::ALIGN_LEFT); |
| message->SetEnabledColor(message_center::kDimTextColor); |
| message->SetBackgroundColor(message_center::kDimTextBackgroundColor); |
| - AddChildView(message); |
| + container_->AddChildView(message); |
| + |
| + remaining_count_ = new views::Label(); |
| + remaining_count_->SetHorizontalAlignment(gfx::ALIGN_RIGHT); |
| + remaining_count_->SetEnabledColor(message_center::kDimTextColor); |
| + remaining_count_->SetBackgroundColor(message_center::kDimTextBackgroundColor); |
| + AddChildView(remaining_count_); |
| + if (num_remaining > 0) { |
| + remaining_count_->SetText(base::UTF8ToUTF16("+") + |
| + base::IntToString16(num_remaining)); |
|
yoshiki
2017/06/21 07:32:12
Could you use a localized string instead of just "
tetsui
2017/06/22 07:25:23
Done.
|
| + } |
| + remaining_count_->SetVisible(false); |
| } |
| ItemView::~ItemView() {} |
| +void ItemView::SetRemainingCountVisible(bool visible) { |
| + remaining_count_->SetVisible(visible); |
| +} |
| + |
| } // anonymous namespace |
| // //////////////////////////////////////////////////////////// |
| @@ -399,8 +427,9 @@ void NotificationViewMD::CreateOrUpdateListItemViews( |
| const std::vector<NotificationItem>& items = notification.items(); |
| - for (size_t i = 0; i < items.size() && i < kNotificationMaximumItems; ++i) { |
| - ItemView* item_view = new ItemView(items[i]); |
| + for (size_t i = 0; i < items.size() && i < kMaxLinesForExpandedMessageView; |
| + ++i) { |
| + ItemView* item_view = new ItemView(items[i], items.size() - i - 1); |
| item_views_.push_back(item_view); |
| left_content_->AddChildView(item_view); |
| } |
| @@ -569,9 +598,13 @@ void NotificationViewMD::UpdateViewForExpandedState(bool expanded) { |
| if (image_container_) |
| image_container_->SetVisible(expanded); |
| actions_row_->SetVisible(expanded && actions_row_->has_children()); |
| - for (size_t i = 1; i < item_views_.size(); ++i) { |
| + for (size_t i = kMaxLinesForMessageView; i < item_views_.size(); ++i) { |
| item_views_[i]->SetVisible(expanded); |
| } |
| + if (!item_views_.empty()) { |
| + item_views_.front()->SetRemainingCountVisible(!expanded); |
| + item_views_.back()->SetRemainingCountVisible(expanded); |
| + } |
| } |
| void NotificationViewMD::UpdateControlButtonsVisibility() { |