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

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

Powered by Google App Engine
This is Rietveld 408576698