1 // Copyright (c) 2012 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.
5 #ifndef UI_MESSAGE_CENTER_VIEWS_NOTIFICATION_VIEW_H_
6 #define UI_MESSAGE_CENTER_VIEWS_NOTIFICATION_VIEW_H_
10 #include "ui/message_center/message_center_export.h"
11 #include "ui/message_center/views/message_view.h"
17 namespace message_center
{
22 // View that displays all current types of notification (web, basic, image, and
23 // list). Future notification types may be handled by other classes, in which
24 // case instances of those classes would be returned by the Create() factory
26 class MESSAGE_CENTER_EXPORT NotificationView
: public MessageView
{
28 // Creates appropriate MessageViews for notifications. Those currently are
29 // always NotificationView or MessageSimpleView instances but in the future
30 // may be instances of other classes, with the class depending on the
31 // notification type. A notification is top level if it needs to be rendered
32 // outside the browser window. No custom shadows are created for top level
33 // notifications on Linux with Aura.
34 static MessageView
* Create(const Notification
& notification
,
35 MessageCenter
* message_center
,
36 MessageCenterTray
* tray
,
40 virtual ~NotificationView();
42 // Overridden from views::View:
43 virtual gfx::Size
GetPreferredSize() OVERRIDE
;
44 virtual int GetHeightForWidth(int width
) OVERRIDE
;
45 virtual void Layout() OVERRIDE
;
46 virtual void OnFocus() OVERRIDE
;
47 virtual void ScrollRectToVisible(const gfx::Rect
& rect
) OVERRIDE
;
48 virtual views::View
* GetEventHandlerForRect(const gfx::Rect
& rect
) OVERRIDE
;
49 virtual gfx::NativeCursor
GetCursor(const ui::MouseEvent
& event
) OVERRIDE
;
51 // Overridden from MessageView:
52 virtual void ButtonPressed(views::Button
* sender
,
53 const ui::Event
& event
) OVERRIDE
;
56 NotificationView(const Notification
& notification
,
57 MessageCenter
* message_center
,
58 MessageCenterTray
* tray
,
62 bool IsExpansionNeeded(int width
);
63 bool IsMessageExpansionNeeded(int width
);
64 int GetMessageLineLimit(int width
);
65 int GetMessageLines(int width
, int limit
);
66 int GetMessageHeight(int width
, int limit
);
68 // Describes whether the view should display a hand pointer or not.
71 // Weak references to NotificationView descendants owned by their parents.
72 views::View
* background_view_
;
73 views::View
* top_view_
;
74 BoundedLabel
* title_view_
;
75 BoundedLabel
* message_view_
;
76 BoundedLabel
* context_message_view_
;
77 std::vector
<views::View
*> item_views_
;
78 views::View
* icon_view_
;
79 views::View
* bottom_view_
;
80 views::View
* image_view_
;
81 views::ProgressBar
* progress_bar_view_
;
82 std::vector
<views::View
*> action_buttons_
;
84 DISALLOW_COPY_AND_ASSIGN(NotificationView
);
87 } // namespace message_center
89 #endif // UI_MESSAGE_CENTER_VIEWS_NOTIFICATION_VIEW_H_