message_center_view.h revision bb1529ce867d8845a77ec7cdf3e3003ef1771a40
1// Copyright (c) 2013 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_VIEW_H_ 6#define UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_VIEW_H_ 7 8#include "ui/views/view.h" 9 10#include "ui/base/animation/animation_delegate.h" 11#include "ui/message_center/message_center_export.h" 12#include "ui/message_center/message_center_observer.h" 13#include "ui/message_center/notification_list.h" 14#include "ui/views/controls/button/button.h" 15 16namespace ui { 17class MultiAnimation; 18} // namespace ui 19 20namespace views { 21class Button; 22} // namespace views 23 24namespace message_center { 25 26class MessageCenter; 27class MessageCenterBubble; 28class NotificationCenterButton; 29class MessageCenterButtonBar; 30class MessageCenterTray; 31class MessageCenterView; 32class MessageView; 33class MessageListView; 34class NotifierSettingsView; 35 36// MessageCenterView /////////////////////////////////////////////////////////// 37 38class MESSAGE_CENTER_EXPORT MessageCenterView : public views::View, 39 public MessageCenterObserver, 40 public ui::AnimationDelegate { 41 public: 42 MessageCenterView(MessageCenter* message_center, 43 MessageCenterTray* tray, 44 int max_height, 45 bool initially_settings_visible, 46 bool top_down); 47 virtual ~MessageCenterView(); 48 49 void SetNotifications(const NotificationList::Notifications& notifications); 50 51 void ClearAllNotifications(); 52 void OnAllNotificationsCleared(); 53 54 size_t NumMessageViewsForTest() const; 55 56 void SetSettingsVisible(bool visible); 57 void OnSettingsChanged(); 58 bool settings_visible() const { return settings_visible_; } 59 60 void SetIsClosing(bool is_closing); 61 62 protected: 63 // Overridden from views::View: 64 virtual void Layout() OVERRIDE; 65 virtual gfx::Size GetPreferredSize() OVERRIDE; 66 virtual int GetHeightForWidth(int width) OVERRIDE; 67 virtual bool OnMouseWheel(const ui::MouseWheelEvent& event) OVERRIDE; 68 virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE; 69 70 // Overridden from MessageCenterObserver: 71 virtual void OnNotificationAdded(const std::string& id) OVERRIDE; 72 virtual void OnNotificationRemoved(const std::string& id, 73 bool by_user) OVERRIDE; 74 virtual void OnNotificationUpdated(const std::string& id) OVERRIDE; 75 76 // Overridden from ui::AnimationDelegate: 77 virtual void AnimationEnded(const ui::Animation* animation) OVERRIDE; 78 virtual void AnimationProgressed(const ui::Animation* animation) OVERRIDE; 79 virtual void AnimationCanceled(const ui::Animation* animation) OVERRIDE; 80 81 private: 82 friend class MessageCenterViewTest; 83 84 void AddNotificationAt(const Notification& notification, int index); 85 void NotificationsChanged(); 86 void SetNotificationViewForTest(views::View* view); 87 88 MessageCenter* message_center_; // Weak reference. 89 MessageCenterTray* tray_; // Weak reference. 90 std::vector<MessageView*> message_views_; // Weak references. 91 92 // Child views. 93 views::ScrollView* scroller_; 94 MessageListView* message_list_view_; 95 NotifierSettingsView* settings_view_; 96 MessageCenterButtonBar* button_bar_; 97 views::View* no_notifications_message_view_; 98 bool top_down_; 99 100 // Data for transition animation between settings view and message list. 101 bool settings_visible_; 102 103 // Animation managing transition between message center and settings (and vice 104 // versa). 105 scoped_ptr<ui::MultiAnimation> settings_transition_animation_; 106 107 // Helper data to keep track of the transition between settings and 108 // message center views. 109 views::View* source_view_; 110 int source_height_; 111 views::View* target_view_; 112 int target_height_; 113 114 // True when the widget is closing so that further operations should be 115 // ignored. 116 bool is_closing_; 117 118 DISALLOW_COPY_AND_ASSIGN(MessageCenterView); 119}; 120 121} // namespace message_center 122 123#endif // UI_MESSAGE_CENTER_VIEWS_MESSAGE_CENTER_VIEW_H_ 124