Index: ui/message_center/views/notification_view.cc |
diff --git a/ui/message_center/views/notification_view.cc b/ui/message_center/views/notification_view.cc |
index 0522e751398cb249f58d0f4a41c014ac006031b2..7947f47eb345f77ef8ec08504dc2a1a523b0923c 100644 |
--- a/ui/message_center/views/notification_view.cc |
+++ b/ui/message_center/views/notification_view.cc |
@@ -24,6 +24,7 @@ |
#include "ui/views/controls/button/image_button.h" |
#include "ui/views/controls/image_view.h" |
#include "ui/views/controls/label.h" |
+#include "ui/views/controls/progress_bar.h" |
#include "ui/views/layout/box_layout.h" |
#include "ui/views/layout/fill_layout.h" |
#include "ui/views/widget/widget.h" |
@@ -38,6 +39,11 @@ const int kTextLeftPadding = kIconSize + message_center::kIconToTextPadding; |
const int kTextBottomPadding = 12; |
const int kTextRightPadding = 23; |
const int kItemTitleToMessagePadding = 3; |
+const int kProgressBarWidth = message_center::kNotificationWidth - |
+ kTextLeftPadding - kTextRightPadding; |
+const int kProgressBarHeight = 8; |
+const int kProgressBarTopPadding = 12; |
+const int kProgressBarBottomPadding = 2; |
const int kButtonVecticalPadding = 0; |
const int kButtonTitleTopPadding = 0; |
@@ -75,6 +81,11 @@ views::Border* MakeTextBorder(int padding, int top, int bottom) { |
} |
// static |
+views::Border* MakeProgressBarBorder(int top, int bottom) { |
+ return MakeEmptyBorder(top, kTextLeftPadding, bottom, kTextRightPadding); |
+} |
+ |
+// static |
views::Border* MakeSeparatorBorder(int top, int left, SkColor color) { |
return views::Border::CreateSolidSidedBorder(top, left, 0, 0, color); |
} |
@@ -223,6 +234,33 @@ gfx::Size ProportionalImageView::GetImageSizeForWidth(int width) { |
return message_center::GetImageSizeForWidth(width, size); |
} |
+// NotificationProgressBar ///////////////////////////////////////////////////// |
+ |
+class NotificationProgressBar : public views::ProgressBar { |
+ public: |
+ NotificationProgressBar(); |
+ virtual ~NotificationProgressBar(); |
+ |
+ private: |
+ // Overriden from View |
+ virtual gfx::Size GetPreferredSize() OVERRIDE; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(NotificationProgressBar); |
+}; |
+ |
+NotificationProgressBar::NotificationProgressBar() { |
+} |
+ |
+NotificationProgressBar::~NotificationProgressBar() { |
+} |
+ |
+gfx::Size NotificationProgressBar::GetPreferredSize() { |
+ gfx::Size pref_size(kProgressBarWidth, kProgressBarHeight); |
+ gfx::Insets insets = GetInsets(); |
+ pref_size.Enlarge(insets.width(), insets.height()); |
+ return pref_size; |
+} |
+ |
// NotificationButton ////////////////////////////////////////////////////////// |
// NotificationButtons render the action buttons of notifications. |
@@ -345,6 +383,7 @@ MessageView* NotificationView::Create(const Notification& notification, |
case NOTIFICATION_TYPE_IMAGE: |
case NOTIFICATION_TYPE_MULTIPLE: |
case NOTIFICATION_TYPE_SIMPLE: |
+ case NOTIFICATION_TYPE_PROGRESS: |
break; |
default: |
// If the caller asks for an unrecognized kind of view (entirely possible |
@@ -422,6 +461,16 @@ NotificationView::NotificationView(const Notification& notification, |
accessible_lines.push_back(notification.message()); |
} |
+ // Create the progress bar view. |
+ progress_bar_view_ = NULL; |
+ if (notification.type() == NOTIFICATION_TYPE_PROGRESS) { |
+ progress_bar_view_ = new NotificationProgressBar(); |
+ progress_bar_view_->set_border(MakeProgressBarBorder( |
+ kProgressBarTopPadding, kProgressBarBottomPadding)); |
+ progress_bar_view_->SetValue(notification.progress() / 100.0); |
+ top_view_->AddChildView(progress_bar_view_); |
+ } |
+ |
// Create the list item views (up to a maximum). |
int padding = kMessageLineHeight - views::Label().font().GetHeight(); |
std::vector<NotificationItem> items = notification.items(); |