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() { |