Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(758)

Unified Diff: ui/message_center/message_center_tray.cc

Issue 11819048: Implement message center on Windows (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Use notification manager instead of balloon view, remove singleton-ness from MessageCenterTray. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/message_center/message_center_tray.cc
diff --git a/ui/message_center/message_center_tray.cc b/ui/message_center/message_center_tray.cc
new file mode 100644
index 0000000000000000000000000000000000000000..e08dff8aa72aec38c923f26fd85661af9c230899
--- /dev/null
+++ b/ui/message_center/message_center_tray.cc
@@ -0,0 +1,120 @@
+// Copyright (c) 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.
+
+#include "ui/message_center/message_center_tray.h"
+
+#include "base/memory/singleton.h"
Jun Mukai 2013/01/22 18:55:34 same -- singleton is not used anymore?
dewittj 2013/01/22 20:49:21 Done.
+#include "base/observer_list.h"
+#include "base/utf_string_conversions.h"
+#include "ui/message_center/message_center_bubble.h"
+#include "ui/message_center/message_popup_bubble.h"
+#include "ui/views/widget/widget.h"
+
+namespace ui {
+
+MessageCenterTray::MessageCenterTray(
+ MessageCenterTrayDelegate* delegate,
+ message_center::MessageCenter* message_center)
+ : message_center_(message_center),
+ message_center_visible_(false),
+ popups_visible_(false),
+ delegate_(delegate) {
+ message_center_->AddObserver(this);
+}
+
+MessageCenterTray::~MessageCenterTray() {
+ message_center_->RemoveObserver(this);
+}
+
+void MessageCenterTray::AddObserver(MessageCenterTrayObserver* observer) {
+ observers_.AddObserver(observer);
+}
+
+void MessageCenterTray::RemoveObserver(MessageCenterTrayObserver* observer) {
+ observers_.RemoveObserver(observer);
+}
+
+void MessageCenterTray::ShowMessageCenterBubble() {
+ if (message_center_visible_)
+ return;
+
+ message_center_->SetMessageCenterVisible(true);
+ HidePopupBubble();
+
+ message_center::MessageCenterBubble* bubble =
+ new message_center::MessageCenterBubble(message_center_);
+ message_center_visible_ = delegate_->ShowMessageCenter(bubble);
+}
+
+bool MessageCenterTray::HideMessageCenterBubble() {
+ if (!message_center_visible_)
+ return false;
+ delegate_->HideMessageCenter();
+ message_center_visible_ = false;
+ message_center_->SetMessageCenterVisible(false);
+ NotifyMessageCenterTrayChanged();
+ return true;
+}
+
+void MessageCenterTray::ToggleMessageCenterBubble() {
+ if (message_center_visible_)
+ HideMessageCenterBubble();
+ else
+ ShowMessageCenterBubble();
+}
+
+void MessageCenterTray::ShowPopupBubble() {
+ if (message_center_visible_)
+ return;
+
+ if (popups_visible_) {
+ delegate_->UpdatePopups();
+ NotifyMessageCenterTrayChanged();
+ return;
+ }
+
+ if (!message_center_->HasPopupNotifications())
+ return;
+
+ message_center::MessagePopupBubble* bubble =
+ new message_center::MessagePopupBubble(message_center_);
+ popups_visible_ = delegate_->ShowPopups(bubble);
+}
+
+bool MessageCenterTray::HidePopupBubble() {
+ if (!popups_visible_)
+ return false;
+
+ delegate_->HidePopups();
+ popups_visible_ = false;
+
+ return true;
+}
+
+void MessageCenterTray::OnMessageCenterChanged(bool new_notification) {
+ if (message_center_visible_) {
+ if (message_center_->NotificationCount() == 0)
+ HideMessageCenterBubble();
+ else
+ delegate_->UpdateMessageCenter();
+ }
+ if (popups_visible_) {
+ if (message_center_->NotificationCount() == 0)
+ HidePopupBubble();
+ else
+ delegate_->UpdatePopups();
+ }
+
+ NotifyMessageCenterTrayChanged();
+ if (new_notification)
+ ShowPopupBubble();
+}
+
+void MessageCenterTray::NotifyMessageCenterTrayChanged() {
+ FOR_EACH_OBSERVER(MessageCenterTrayObserver,
+ observers_,
+ OnMessageCenterTrayChanged());
+}
+
+} // namespace ui

Powered by Google App Engine
This is Rietveld 408576698