Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(527)

Unified Diff: ui/message_center/views/notification_view.cc

Issue 1447933002: Implement an indeterminate progress-bar (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Split into two class Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 76b7827614857c9bc70cc7febf930f0f3d8a3b3d..2ccf3818765e0c88098b4a4c63a3bb7b9252ff8b 100644
--- a/ui/message_center/views/notification_view.cc
+++ b/ui/message_center/views/notification_view.cc
@@ -14,6 +14,7 @@
#include "ui/base/cursor/cursor.h"
#include "ui/base/l10n/l10n_util.h"
#include "ui/base/layout.h"
+#include "ui/gfx/animation/slide_animation.h"
Jun Mukai 2015/11/24 17:51:12 this is not used here?
yoshiki 2015/11/25 15:14:28 Done.
#include "ui/gfx/canvas.h"
#include "ui/gfx/geometry/size.h"
#include "ui/gfx/skia_util.h"
@@ -26,6 +27,7 @@
#include "ui/message_center/views/constants.h"
#include "ui/message_center/views/message_center_controller.h"
#include "ui/message_center/views/notification_button.h"
+#include "ui/message_center/views/notification_progress_bar.h"
#include "ui/message_center/views/padded_button.h"
#include "ui/message_center/views/proportional_image_view.h"
#include "ui/native_theme/native_theme.h"
@@ -48,8 +50,6 @@
namespace {
// Dimensions.
-const int kProgressBarWidth = message_center::kNotificationWidth -
- message_center::kTextLeftPadding - message_center::kTextRightPadding;
const int kProgressBarBottomPadding = 0;
// static
@@ -157,67 +157,6 @@ void ItemView::SetVisible(bool visible) {
child_at(i)->SetVisible(visible);
}
-// NotificationProgressBar /////////////////////////////////////////////////////
-
-class NotificationProgressBar : public views::ProgressBar {
- public:
- NotificationProgressBar();
- ~NotificationProgressBar() override;
-
- private:
- // Overriden from View
- gfx::Size GetPreferredSize() const override;
- void OnPaint(gfx::Canvas* canvas) override;
-
- DISALLOW_COPY_AND_ASSIGN(NotificationProgressBar);
-};
-
-NotificationProgressBar::NotificationProgressBar() {
-}
-
-NotificationProgressBar::~NotificationProgressBar() {
-}
-
-gfx::Size NotificationProgressBar::GetPreferredSize() const {
- gfx::Size pref_size(kProgressBarWidth, message_center::kProgressBarThickness);
- gfx::Insets insets = GetInsets();
- pref_size.Enlarge(insets.width(), insets.height());
- return pref_size;
-}
-
-void NotificationProgressBar::OnPaint(gfx::Canvas* canvas) {
- gfx::Rect content_bounds = GetContentsBounds();
-
- // Draw background.
- SkPath background_path;
- background_path.addRoundRect(gfx::RectToSkRect(content_bounds),
- message_center::kProgressBarCornerRadius,
- message_center::kProgressBarCornerRadius);
- SkPaint background_paint;
- background_paint.setStyle(SkPaint::kFill_Style);
- background_paint.setFlags(SkPaint::kAntiAlias_Flag);
- background_paint.setColor(message_center::kProgressBarBackgroundColor);
- canvas->DrawPath(background_path, background_paint);
-
- // Draw slice.
- const int slice_width =
- static_cast<int>(content_bounds.width() * GetNormalizedValue() + 0.5);
- if (slice_width < 1)
- return;
-
- gfx::Rect slice_bounds = content_bounds;
- slice_bounds.set_width(slice_width);
- SkPath slice_path;
- slice_path.addRoundRect(gfx::RectToSkRect(slice_bounds),
- message_center::kProgressBarCornerRadius,
- message_center::kProgressBarCornerRadius);
- SkPaint slice_paint;
- slice_paint.setStyle(SkPaint::kFill_Style);
- slice_paint.setFlags(SkPaint::kAntiAlias_Flag);
- slice_paint.setColor(message_center::kProgressBarSliceColor);
- canvas->DrawPath(slice_path, slice_paint);
-}
-
} // namespace
namespace message_center {
@@ -234,6 +173,7 @@ NotificationView* NotificationView::Create(MessageCenterController* controller,
case NOTIFICATION_TYPE_MULTIPLE:
case NOTIFICATION_TYPE_SIMPLE:
case NOTIFICATION_TYPE_PROGRESS:
+ case NOTIFICATION_TYPE_PROGRESS_INDETERMINATE:
break;
default:
// If the caller asks for an unrecognized kind of view (entirely possible
@@ -291,6 +231,7 @@ void NotificationView::CreateOrUpdateViews(const Notification& notification) {
CreateOrUpdateTitleView(notification);
CreateOrUpdateMessageView(notification);
CreateOrUpdateProgressBarView(notification);
+ CreateOrUpdateIndeterminateProgressBarView(notification);
CreateOrUpdateListItemViews(notification);
CreateOrUpdateIconView(notification);
CreateOrUpdateImageView(notification);
@@ -331,7 +272,8 @@ NotificationView::NotificationView(MessageCenterController* controller,
bottom_view_(NULL),
image_container_(NULL),
image_view_(NULL),
- progress_bar_view_(NULL) {
+ progress_bar_view_(NULL),
+ indeterminate_progress_bar_view_(NULL) {
// Create the top_view_, which collects into a vertical box all content
// at the top of the notification (to the right of the icon) except for the
// close button.
@@ -674,6 +616,30 @@ void NotificationView::CreateOrUpdateProgressBarView(
progress_bar_view_->SetVisible(!notification.items().size());
}
+void NotificationView::CreateOrUpdateIndeterminateProgressBarView(
+ const Notification& notification) {
+ if (notification.type() != NOTIFICATION_TYPE_PROGRESS_INDETERMINATE) {
+ if (indeterminate_progress_bar_view_) {
+ // Deletion will also remove |progress_bar_view_| from its parent.
+ delete indeterminate_progress_bar_view_;
+ indeterminate_progress_bar_view_ = NULL;
+ }
+ return;
+ }
+
+ DCHECK(top_view_ != NULL);
+
+ if (!indeterminate_progress_bar_view_) {
+ indeterminate_progress_bar_view_ =
+ new NotificationIndeterminateProgressBar();
+ indeterminate_progress_bar_view_->SetBorder(MakeProgressBarBorder(
+ message_center::kProgressBarTopPadding, kProgressBarBottomPadding));
+ top_view_->AddChildView(indeterminate_progress_bar_view_);
+ }
+
+ indeterminate_progress_bar_view_->SetVisible(!notification.items().size());
+}
+
void NotificationView::CreateOrUpdateListItemViews(
const Notification& notification) {
for (size_t i = 0; i < item_views_.size(); ++i)
« ui/message_center/views/notification_view.h ('K') | « ui/message_center/views/notification_view.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698