// Copyright 2013 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_GROUP_VIEW_H_ #define UI_MESSAGE_CENTER_VIEWS_GROUP_VIEW_H_ #include "ui/gfx/image/image_skia.h" #include "ui/message_center/views/message_center_controller.h" #include "ui/message_center/views/message_center_view.h" #include "ui/message_center/views/message_view.h" namespace message_center { class BoundedLabel; class MessageCenter; class NotificationButton; // View that displays a placeholder representing several notifications and a // button to expand it into a set of individual notifications. class GroupView : public MessageView, public MessageViewController { public: // The group view currently shows the latest notificaiton w/o buttons // and a single button like "N more from XYZ". // Each GroupView has a notifier_id which it uses to report clicks and other // user actions to Client. GroupView(MessageCenterController* controller, const NotifierId& notifier_id, const Notification& last_notification, const gfx::ImageSkia& group_icon, int group_size); virtual ~GroupView(); // Overridden from views::View: virtual gfx::Size GetPreferredSize() OVERRIDE; virtual int GetHeightForWidth(int width) OVERRIDE; virtual void Layout() OVERRIDE; virtual void OnFocus() OVERRIDE; virtual gfx::NativeCursor GetCursor(const ui::MouseEvent& event) OVERRIDE; // Overridden from MessageView: virtual void ButtonPressed(views::Button* sender, const ui::Event& event) OVERRIDE; // Overridden from MessageViewController: virtual void ClickOnNotification(const std::string& notification_id) OVERRIDE; virtual void RemoveNotification(const std::string& notification_id, bool by_user) OVERRIDE; virtual void DisableNotificationsFromThisSource( const NotifierId& notifier_id) OVERRIDE; virtual void ShowNotifierSettingsBubble() OVERRIDE; private: MessageCenterController* controller_; // Weak, controls lifetime of views. NotifierId notifier_id_; string16 display_source_; gfx::ImageSkia group_icon_; int group_size_; std::string last_notification_id_; // Weak references to GroupView descendants owned by their parents. views::View* background_view_; views::View* top_view_; views::View* bottom_view_; BoundedLabel* title_view_; BoundedLabel* message_view_; BoundedLabel* context_message_view_; views::View* icon_view_; NotificationButton* more_button_; DISALLOW_COPY_AND_ASSIGN(GroupView); }; } // namespace message_center #endif // UI_MESSAGE_CENTER_VIEWS_GROUP_VIEW_H_