OLD | NEW |
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/message_center/message_center_tray.h" | 5 #include "ui/message_center/message_center_tray.h" |
6 | 6 |
7 #include "base/observer_list.h" | 7 #include "base/observer_list.h" |
8 #include "base/strings/utf_string_conversions.h" | 8 #include "base/strings/utf_string_conversions.h" |
9 #include "grit/ui_strings.h" | 9 #include "grit/ui_strings.h" |
10 #include "ui/base/l10n/l10n_util.h" | 10 #include "ui/base/l10n/l10n_util.h" |
11 #include "ui/message_center/message_center.h" | 11 #include "ui/message_center/message_center.h" |
12 #include "ui/message_center/message_center_tray_delegate.h" | 12 #include "ui/message_center/message_center_tray_delegate.h" |
| 13 #include "ui/message_center/message_center_types.h" |
13 | 14 |
14 namespace message_center { | 15 namespace message_center { |
15 | 16 |
16 MessageCenterTray::MessageCenterTray( | 17 MessageCenterTray::MessageCenterTray( |
17 MessageCenterTrayDelegate* delegate, | 18 MessageCenterTrayDelegate* delegate, |
18 message_center::MessageCenter* message_center) | 19 message_center::MessageCenter* message_center) |
19 : message_center_(message_center), | 20 : message_center_(message_center), |
20 message_center_visible_(false), | 21 message_center_visible_(false), |
21 popups_visible_(false), | 22 popups_visible_(false), |
22 delegate_(delegate) { | 23 delegate_(delegate) { |
23 message_center_->AddObserver(this); | 24 message_center_->AddObserver(this); |
24 } | 25 } |
25 | 26 |
26 MessageCenterTray::~MessageCenterTray() { | 27 MessageCenterTray::~MessageCenterTray() { |
27 message_center_->RemoveObserver(this); | 28 message_center_->RemoveObserver(this); |
28 } | 29 } |
29 | 30 |
30 bool MessageCenterTray::ShowMessageCenterBubble() { | 31 bool MessageCenterTray::ShowMessageCenterBubble() { |
31 if (message_center_visible_) | 32 if (message_center_visible_) |
32 return true; | 33 return true; |
33 | 34 |
34 HidePopupBubble(); | 35 HidePopupBubbleInternal(); |
35 | 36 |
36 message_center_visible_ = delegate_->ShowMessageCenter(); | 37 message_center_visible_ = delegate_->ShowMessageCenter(); |
37 message_center_->SetMessageCenterVisible(message_center_visible_); | 38 message_center_->SetVisibility(message_center::VISIBILITY_MESSAGE_CENTER); |
| 39 NotifyMessageCenterTrayChanged(); |
38 return message_center_visible_; | 40 return message_center_visible_; |
39 } | 41 } |
40 | 42 |
41 bool MessageCenterTray::HideMessageCenterBubble() { | 43 bool MessageCenterTray::HideMessageCenterBubble() { |
42 if (!message_center_visible_) | 44 if (!message_center_visible_) |
43 return false; | 45 return false; |
44 delegate_->HideMessageCenter(); | 46 delegate_->HideMessageCenter(); |
45 MarkMessageCenterHidden(); | 47 MarkMessageCenterHidden(); |
46 return true; | 48 return true; |
47 } | 49 } |
48 | 50 |
49 void MessageCenterTray::MarkMessageCenterHidden() { | 51 void MessageCenterTray::MarkMessageCenterHidden() { |
50 if (!message_center_visible_) | 52 if (!message_center_visible_) |
51 return; | 53 return; |
52 message_center_visible_ = false; | 54 message_center_visible_ = false; |
53 message_center_->SetMessageCenterVisible(false); | 55 |
54 // Some notifications (like system ones) should appear as popups again | 56 // Some notifications (like system ones) should appear as popups again |
55 // after the message center is closed. | 57 // after the message center is closed. |
56 if (message_center_->HasPopupNotifications()) | 58 if (message_center_->HasPopupNotifications()) { |
57 ShowPopupBubble(); | 59 ShowPopupBubble(); |
| 60 return; |
| 61 } |
| 62 |
| 63 message_center_->SetVisibility(message_center::VISIBILITY_TRANSIENT); |
| 64 |
58 NotifyMessageCenterTrayChanged(); | 65 NotifyMessageCenterTrayChanged(); |
59 } | 66 } |
60 | 67 |
61 void MessageCenterTray::ToggleMessageCenterBubble() { | 68 void MessageCenterTray::ToggleMessageCenterBubble() { |
62 if (message_center_visible_) | 69 if (message_center_visible_) |
63 HideMessageCenterBubble(); | 70 HideMessageCenterBubble(); |
64 else | 71 else |
65 ShowMessageCenterBubble(); | 72 ShowMessageCenterBubble(); |
66 } | 73 } |
67 | 74 |
68 void MessageCenterTray::ShowPopupBubble() { | 75 void MessageCenterTray::ShowPopupBubble() { |
69 if (message_center_visible_) | 76 if (message_center_visible_) |
70 return; | 77 return; |
71 | 78 |
72 if (popups_visible_) { | 79 if (popups_visible_) { |
73 NotifyMessageCenterTrayChanged(); | 80 NotifyMessageCenterTrayChanged(); |
74 return; | 81 return; |
75 } | 82 } |
76 | 83 |
77 if (!message_center_->HasPopupNotifications()) | 84 if (!message_center_->HasPopupNotifications()) |
78 return; | 85 return; |
79 | 86 |
80 popups_visible_ = delegate_->ShowPopups(); | 87 popups_visible_ = delegate_->ShowPopups(); |
| 88 |
81 NotifyMessageCenterTrayChanged(); | 89 NotifyMessageCenterTrayChanged(); |
82 } | 90 } |
83 | 91 |
84 bool MessageCenterTray::HidePopupBubble() { | 92 bool MessageCenterTray::HidePopupBubble() { |
85 if (!popups_visible_) | 93 if (!popups_visible_) |
86 return false; | 94 return false; |
87 | 95 HidePopupBubbleInternal(); |
88 delegate_->HidePopups(); | |
89 popups_visible_ = false; | |
90 NotifyMessageCenterTrayChanged(); | 96 NotifyMessageCenterTrayChanged(); |
91 | 97 |
92 return true; | 98 return true; |
93 } | 99 } |
94 | 100 |
| 101 void MessageCenterTray::HidePopupBubbleInternal() { |
| 102 if (!popups_visible_) |
| 103 return; |
| 104 |
| 105 delegate_->HidePopups(); |
| 106 popups_visible_ = false; |
| 107 } |
| 108 |
95 void MessageCenterTray::ShowNotifierSettingsBubble() { | 109 void MessageCenterTray::ShowNotifierSettingsBubble() { |
96 if (popups_visible_) | 110 if (popups_visible_) |
97 HidePopupBubble(); | 111 HidePopupBubbleInternal(); |
98 | 112 |
99 message_center_visible_ = delegate_->ShowNotifierSettings(); | 113 message_center_visible_ = delegate_->ShowNotifierSettings(); |
| 114 message_center_->SetVisibility(message_center::VISIBILITY_SETTINGS); |
| 115 |
| 116 NotifyMessageCenterTrayChanged(); |
100 } | 117 } |
101 | 118 |
102 void MessageCenterTray::OnNotificationAdded( | 119 void MessageCenterTray::OnNotificationAdded( |
103 const std::string& notification_id) { | 120 const std::string& notification_id) { |
104 OnMessageCenterChanged(); | 121 OnMessageCenterChanged(); |
105 } | 122 } |
106 | 123 |
107 void MessageCenterTray::OnNotificationRemoved( | 124 void MessageCenterTray::OnNotificationRemoved( |
108 const std::string& notification_id, | 125 const std::string& notification_id, |
109 bool by_user) { | 126 bool by_user) { |
(...skipping 21 matching lines...) Expand all Loading... |
131 void MessageCenterTray::OnNotificationDisplayed( | 148 void MessageCenterTray::OnNotificationDisplayed( |
132 const std::string& notification_id) { | 149 const std::string& notification_id) { |
133 NotifyMessageCenterTrayChanged(); | 150 NotifyMessageCenterTrayChanged(); |
134 } | 151 } |
135 | 152 |
136 void MessageCenterTray::OnQuietModeChanged(bool in_quiet_mode) { | 153 void MessageCenterTray::OnQuietModeChanged(bool in_quiet_mode) { |
137 NotifyMessageCenterTrayChanged(); | 154 NotifyMessageCenterTrayChanged(); |
138 } | 155 } |
139 | 156 |
140 void MessageCenterTray::OnMessageCenterChanged() { | 157 void MessageCenterTray::OnMessageCenterChanged() { |
141 if (message_center_visible_) { | 158 if (message_center_visible_ && message_center_->NotificationCount() == 0) |
142 if (message_center_->NotificationCount() == 0) | 159 HideMessageCenterBubble(); |
143 HideMessageCenterBubble(); | |
144 } | |
145 | 160 |
146 if (popups_visible_ && !message_center_->HasPopupNotifications()) | 161 if (popups_visible_ && !message_center_->HasPopupNotifications()) |
147 HidePopupBubble(); | 162 HidePopupBubbleInternal(); |
148 else if (message_center_->HasPopupNotifications()) | 163 else if (!popups_visible_ && message_center_->HasPopupNotifications()) |
149 ShowPopupBubble(); | 164 ShowPopupBubble(); |
150 | 165 |
151 NotifyMessageCenterTrayChanged(); | 166 NotifyMessageCenterTrayChanged(); |
152 } | 167 } |
153 | 168 |
154 void MessageCenterTray::NotifyMessageCenterTrayChanged() { | 169 void MessageCenterTray::NotifyMessageCenterTrayChanged() { |
155 delegate_->OnMessageCenterTrayChanged(); | 170 delegate_->OnMessageCenterTrayChanged(); |
156 } | 171 } |
157 | 172 |
158 } // namespace message_center | 173 } // namespace message_center |
OLD | NEW |