| 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 |