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

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: Now with more tests, and corrected copyright notices. 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"
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(MessageCenterTrayDelegate* delegate)
17 : message_center_visible_(false),
18 popups_visible_(false),
19 delegate_(delegate) {
20 message_center_ = new message_center::MessageCenter();
stevenjb 2013/01/18 23:11:46 This should be scoped if it owns MessageCenter, bu
dewittj 2013/01/20 19:02:06 Done.
21 message_center_->AddObserver(this);
22 }
23
24 MessageCenterTray::~MessageCenterTray() {
25 message_center_->RemoveObserver(this);
26 }
27
28 void MessageCenterTray::AddObserver(MessageCenterTrayObserver* observer) {
29 observers_.AddObserver(observer);
30 }
31
32 void MessageCenterTray::RemoveObserver(MessageCenterTrayObserver* observer) {
33 observers_.RemoveObserver(observer);
34 }
35
36 void MessageCenterTray::ShowMessageCenterBubble() {
37 if (message_center_visible_)
38 return;
39
40 message_center_->SetMessageCenterVisible(true);
41 HidePopupBubble();
42
43 message_center::MessageCenterBubble* bubble =
44 new message_center::MessageCenterBubble(message_center_);
45 message_center_visible_ = delegate_->ShowMessageCenter(bubble);
46 if (!message_center_visible_)
47 return; // Unable to show message center.
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 NotifyMessageCenterTrayChanged();
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 }
89
90 bool MessageCenterTray::HidePopupBubble() {
91 if (!popups_visible_)
92 return false;
93
94 delegate_->HidePopups();
95 popups_visible_ = false;
96
97 return true;
98 }
99
100 void MessageCenterTray::OnMessageCenterChanged(bool new_notification) {
101 if (message_center_visible_) {
102 if (message_center_->NotificationCount() == 0)
103 HideMessageCenterBubble();
104 else
105 delegate_->UpdateMessageCenter();
106 }
107 if (popups_visible_) {
108 if (message_center_->NotificationCount() == 0)
109 HidePopupBubble();
110 else
111 delegate_->UpdatePopups();
112 }
113
114 NotifyMessageCenterTrayChanged();
115 if (new_notification)
116 ShowPopupBubble();
117 }
118
119 void MessageCenterTray::NotifyMessageCenterTrayChanged() {
120 FOR_EACH_OBSERVER(MessageCenterTrayObserver,
121 observers_,
122 OnMessageCenterTrayChanged());
123 }
124
125 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698