| Index: ui/message_center/views/message_list_view.h
|
| diff --git a/ui/message_center/views/message_list_view.h b/ui/message_center/views/message_list_view.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..4e6b48d0bd1fbb94f9068f61db141216691e978d
|
| --- /dev/null
|
| +++ b/ui/message_center/views/message_list_view.h
|
| @@ -0,0 +1,103 @@
|
| +// Copyright (c) 2015 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.
|
| +
|
| +#ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_LIST_VIEW_H_
|
| +#define UI_MESSAGE_CENTER_VIEWS_MESSAGE_LIST_VIEW_H_
|
| +
|
| +#include <list>
|
| +#include <set>
|
| +
|
| +#include "ui/compositor/paint_context.h"
|
| +#include "ui/gfx/geometry/rect.h"
|
| +#include "ui/gfx/geometry/size.h"
|
| +#include "ui/message_center/notification.h"
|
| +#include "ui/views/animation/bounds_animator_observer.h"
|
| +#include "ui/views/view.h"
|
| +
|
| +namespace gfx {
|
| +class Canvas;
|
| +}
|
| +
|
| +namespace ui {
|
| +class Layer;
|
| +}
|
| +
|
| +namespace views {
|
| +class BoundsAnimator;
|
| +}
|
| +
|
| +namespace message_center {
|
| +
|
| +class MessageCenterView;
|
| +class MessageView;
|
| +
|
| +// Displays a list of messages for rich notifications. Functions as an array of
|
| +// MessageViews and animates them on transitions. It also supports
|
| +// repositioning.
|
| +class MessageListView : public views::View,
|
| + public views::BoundsAnimatorObserver {
|
| + public:
|
| + explicit MessageListView(MessageCenterView* message_center_view,
|
| + bool top_down);
|
| + ~MessageListView() override;
|
| +
|
| + void AddNotificationAt(MessageView* view, int i);
|
| + void RemoveNotification(MessageView* view);
|
| + void UpdateNotification(MessageView* view, const Notification& notification);
|
| + void SetRepositionTarget(const gfx::Rect& target_rect);
|
| + void ResetRepositionSession();
|
| + void ClearAllNotifications(const gfx::Rect& visible_scroll_rect);
|
| +
|
| + protected:
|
| + // Overridden from views::View.
|
| + void Layout() override;
|
| + gfx::Size GetPreferredSize() const override;
|
| + int GetHeightForWidth(int width) const override;
|
| + void PaintChildren(const ui::PaintContext& context) override;
|
| + void ReorderChildLayers(ui::Layer* parent_layer) override;
|
| +
|
| + // Overridden from views::BoundsAnimatorObserver.
|
| + void OnBoundsAnimatorProgressed(views::BoundsAnimator* animator) override;
|
| + void OnBoundsAnimatorDone(views::BoundsAnimator* animator) override;
|
| +
|
| + private:
|
| + bool IsValidChild(const views::View* child) const;
|
| + void DoUpdateIfPossible();
|
| +
|
| + // Animates all notifications below target upwards to align with the top of
|
| + // the last closed notification.
|
| + void AnimateNotificationsBelowTarget();
|
| + // Animates all notifications above target downwards to align with the top of
|
| + // the last closed notification.
|
| + void AnimateNotificationsAboveTarget();
|
| +
|
| + // Schedules animation for a child to the specified position. Returns false
|
| + // if |child| will disappear after the animation.
|
| + bool AnimateChild(views::View* child, int top, int height);
|
| +
|
| + // Animate clearing one notification.
|
| + void AnimateClearingOneNotification();
|
| + MessageCenterView* message_center_view() const {
|
| + return message_center_view_;
|
| + }
|
| +
|
| + MessageCenterView* message_center_view_; // Weak reference.
|
| + // The top position of the reposition target rectangle.
|
| + int reposition_top_;
|
| + int fixed_height_;
|
| + bool has_deferred_task_;
|
| + bool clear_all_started_;
|
| + bool top_down_;
|
| + std::set<views::View*> adding_views_;
|
| + std::set<views::View*> deleting_views_;
|
| + std::set<views::View*> deleted_when_done_;
|
| + std::list<views::View*> clearing_all_views_;
|
| + scoped_ptr<views::BoundsAnimator> animator_;
|
| + base::WeakPtrFactory<MessageListView> weak_ptr_factory_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(MessageListView);
|
| +};
|
| +
|
| +} // namespace message_center
|
| +#endif // UI_MESSAGE_CENTER_VIEWS_MESSAGE_LIST_VIEW_H_
|
|
|