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

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: Address sky/msw comments + rebase. Created 7 years, 10 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/observer_list.h"
8 #include "base/utf_string_conversions.h"
9 #include "ui/message_center/message_center_tray_delegate.h"
10
11 namespace message_center {
12
13 MessageCenterTray::MessageCenterTray(
14 MessageCenterTrayDelegate* delegate,
15 message_center::MessageCenter* message_center)
16 : message_center_(message_center),
17 message_center_visible_(false),
18 popups_visible_(false),
19 delegate_(delegate) {
20 message_center_->AddObserver(this);
21 }
22
23 MessageCenterTray::~MessageCenterTray() {
24 message_center_->RemoveObserver(this);
25 }
26
27 bool MessageCenterTray::ShowMessageCenterBubble() {
28 if (message_center_visible_)
29 return true;
30
31 HidePopupBubble();
32
33 message_center_visible_ = delegate_->ShowMessageCenter();
34 message_center_->SetMessageCenterVisible(message_center_visible_);
35 return message_center_visible_;
36 }
37
38 bool MessageCenterTray::HideMessageCenterBubble() {
39 if (!message_center_visible_)
40 return false;
41 delegate_->HideMessageCenter();
42 message_center_visible_ = false;
43 message_center_->SetMessageCenterVisible(false);
44 NotifyMessageCenterTrayChanged();
45 return true;
46 }
47
48 void MessageCenterTray::ToggleMessageCenterBubble() {
49 if (message_center_visible_)
50 HideMessageCenterBubble();
51 else
52 ShowMessageCenterBubble();
53 }
54
55 void MessageCenterTray::ShowPopupBubble() {
56 if (message_center_visible_) {
57 // We don't want to show popups if the user is already looking at the
58 // message center. Instead, update it.
59 delegate_->UpdateMessageCenter();
60 return;
61 }
62
63 if (popups_visible_) {
64 delegate_->UpdatePopups();
65 NotifyMessageCenterTrayChanged();
66 return;
67 }
68
69 if (!message_center_->HasPopupNotifications())
70 return;
71
72 popups_visible_ = delegate_->ShowPopups();
73 NotifyMessageCenterTrayChanged();
74 }
75
76 bool MessageCenterTray::HidePopupBubble() {
77 if (!popups_visible_)
78 return false;
79
80 delegate_->HidePopups();
81 popups_visible_ = false;
82 NotifyMessageCenterTrayChanged();
83
84 return true;
85 }
86
87 void MessageCenterTray::OnMessageCenterChanged(bool new_notification) {
88 if (message_center_visible_) {
89 if (message_center_->NotificationCount() == 0)
90 HideMessageCenterBubble();
91 else
92 delegate_->UpdateMessageCenter();
93 }
94 if (popups_visible_) {
95 if (message_center_->NotificationCount() == 0)
96 HidePopupBubble();
97 else
98 delegate_->UpdatePopups();
99 }
100
101 if (new_notification)
102 ShowPopupBubble();
103
104 NotifyMessageCenterTrayChanged();
105 }
106
107 void MessageCenterTray::NotifyMessageCenterTrayChanged() {
108 delegate_->OnMessageCenterTrayChanged();
109 }
110
111 } // namespace message_center
OLDNEW
« no previous file with comments | « ui/message_center/message_center_tray.h ('k') | ui/message_center/message_center_tray_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698