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

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: Rebase. 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) 2012 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/utf_string_conversions.h"
9 #include "ui/message_center/message_center_bubble.h"
10 #include "ui/message_center/message_popup_bubble.h"
11 #include "ui/views/widget/widget.h"
12
13 namespace ui {
14
15 MessageCenterTray::MessageCenterTray(MessageCenterTrayDelegate* delegate)
16 : message_center_visible_(false),
17 popups_visible_(false),
18 delegate_(delegate) {
19 message_center_ = new message_center::MessageCenter();
20 message_center_->AddObserver(this);
21 }
22
23 MessageCenterTray::~MessageCenterTray() {
24 message_center_->RemoveObserver(this);
25 }
26
27 void MessageCenterTray::AddObserver(MessageCenterTrayObserver* observer) {
28 observers_.AddObserver(observer);
29 }
30
31 void MessageCenterTray::RemoveObserver(MessageCenterTrayObserver* observer) {
32 observers_.RemoveObserver(observer);
33 }
34
35 void MessageCenterTray::ShowMessageCenterBubble() {
36 if (message_center_visible_)
37 return;
38
39 message_center_->SetMessageCenterVisible(true);
40 HidePopupBubble();
41
42 message_center::MessageCenterBubble* bubble =
43 new message_center::MessageCenterBubble(message_center_);
44 message_center_visible_ = delegate_->ShowMessageCenter(bubble);
45 if (!message_center_visible_)
46 return; // Unable to show message center.
47 NotifyShowMessageCenterBubble();
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 NotifyHideMessageCenterBubble();
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 if (!popups_visible_)
Pete Williamson 2013/01/17 19:07:45 Remove these two lines
dewittj 2013/01/18 00:57:46 Done.
89 return;
90 }
91
92 bool MessageCenterTray::HidePopupBubble() {
93 if (!popups_visible_)
94 return false;
95
96 delegate_->HidePopups();
97 popups_visible_ = false;
98
99 NotifyHidePopupBubble();
100
101 return true;
102 }
103
104 void MessageCenterTray::OnMessageCenterChanged(bool new_notification) {
105 if (message_center_visible_) {
106 if (message_center_->NotificationCount() == 0)
107 HideMessageCenterBubble();
108 else
109 delegate_->UpdateMessageCenter();
110 }
111 if (popups_visible_) {
112 if (message_center_->NotificationCount() == 0)
113 HidePopupBubble();
114 else
115 delegate_->UpdatePopups();
116 }
117
118 NotifyMessageCenterTrayChanged();
119 if (new_notification)
120 ShowPopupBubble();
121 }
122
123 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698