OLD | NEW |
---|---|
(Empty) | |
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. | |
4 | |
5 #include "ui/message_center/message_center_tray.h" | |
6 | |
7 #include "base/memory/singleton.h" | |
8 #include "base/utf_string_conversions.h" | |
9 #include "ui/message_center/message_center_bubble.h" | |
10 #include "ui/message_center/message_popup_bubble.h" | |
11 #include "ui/views/widget/widget.h" | |
12 | |
13 namespace ui { | |
14 | |
15 MessageCenterTray::MessageCenterTray(MessageCenterTrayDelegate* delegate) | |
16 : message_center_visible_(false), | |
17 popups_visible_(false), | |
18 delegate_(delegate) { | |
19 message_center_ = new message_center::MessageCenter(); | |
20 message_center_->AddObserver(this); | |
21 } | |
22 | |
23 MessageCenterTray::~MessageCenterTray() { | |
24 message_center_->RemoveObserver(this); | |
25 } | |
26 | |
27 void MessageCenterTray::AddObserver(MessageCenterTrayObserver* observer) { | |
28 observers_.AddObserver(observer); | |
29 } | |
30 | |
31 void MessageCenterTray::RemoveObserver(MessageCenterTrayObserver* observer) { | |
32 observers_.RemoveObserver(observer); | |
33 } | |
34 | |
35 void MessageCenterTray::ShowMessageCenterBubble() { | |
36 if (message_center_visible_) | |
37 return; | |
38 | |
39 message_center_->SetMessageCenterVisible(true); | |
40 HidePopupBubble(); | |
41 | |
42 message_center::MessageCenterBubble* bubble = | |
43 new message_center::MessageCenterBubble(message_center_); | |
44 message_center_visible_ = delegate_->ShowMessageCenter(bubble); | |
45 if (!message_center_visible_) | |
46 return; // Unable to show message center. | |
47 NotifyShowMessageCenterBubble(); | |
48 } | |
49 | |
50 bool MessageCenterTray::HideMessageCenterBubble() { | |
51 if (!message_center_visible_) | |
52 return false; | |
53 | |
54 delegate_->HideMessageCenter(); | |
55 | |
56 message_center_visible_ = false; | |
57 message_center_->SetMessageCenterVisible(false); | |
58 | |
59 NotifyHideMessageCenterBubble(); | |
60 | |
61 return true; | |
62 } | |
63 | |
64 void MessageCenterTray::ToggleMessageCenterBubble() { | |
65 if (message_center_visible_) { | |
66 HideMessageCenterBubble(); | |
67 } else { | |
68 ShowMessageCenterBubble(); | |
69 } | |
70 } | |
71 | |
72 void MessageCenterTray::ShowPopupBubble() { | |
73 if (message_center_visible_) | |
74 return; | |
75 | |
76 if (popups_visible_) { | |
77 delegate_->UpdatePopups(); | |
78 NotifyMessageCenterTrayChanged(); | |
79 return; | |
80 } | |
81 | |
82 if (!message_center_->HasPopupNotifications()) | |
83 return; | |
84 | |
85 message_center::MessagePopupBubble* bubble = | |
86 new message_center::MessagePopupBubble(message_center_); | |
87 popups_visible_ = delegate_->ShowPopups(bubble); | |
88 if (!popups_visible_) | |
Pete Williamson
2013/01/17 19:07:45
Remove these two lines
dewittj
2013/01/18 00:57:46
Done.
| |
89 return; | |
90 } | |
91 | |
92 bool MessageCenterTray::HidePopupBubble() { | |
93 if (!popups_visible_) | |
94 return false; | |
95 | |
96 delegate_->HidePopups(); | |
97 popups_visible_ = false; | |
98 | |
99 NotifyHidePopupBubble(); | |
100 | |
101 return true; | |
102 } | |
103 | |
104 void MessageCenterTray::OnMessageCenterChanged(bool new_notification) { | |
105 if (message_center_visible_) { | |
106 if (message_center_->NotificationCount() == 0) | |
107 HideMessageCenterBubble(); | |
108 else | |
109 delegate_->UpdateMessageCenter(); | |
110 } | |
111 if (popups_visible_) { | |
112 if (message_center_->NotificationCount() == 0) | |
113 HidePopupBubble(); | |
114 else | |
115 delegate_->UpdatePopups(); | |
116 } | |
117 | |
118 NotifyMessageCenterTrayChanged(); | |
119 if (new_notification) | |
120 ShowPopupBubble(); | |
121 } | |
122 | |
123 } // namespace ui | |
OLD | NEW |