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

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 petewil & stevenjb comments. Move MessageCenterTrayDelegate to its own class. 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 void MessageCenterTray::ShowMessageCenterBubble() {
miket_OOO 2013/01/25 17:14:48 This isn't a big deal, but I wonder why only hide
dewittj 2013/01/25 19:38:46 Hm, maybe it would be useful to return the answer
28 if (message_center_visible_)
29 return;
30
31 message_center_->SetMessageCenterVisible(true);
32 HidePopupBubble();
33
34 message_center_visible_ = delegate_->ShowMessageCenter();
miket_OOO 2013/01/25 17:14:48 Is there any chance this could fail? Could message
dewittj 2013/01/25 19:38:46 I suppose there is a chance. It can fail when the
35 }
36
37 bool MessageCenterTray::HideMessageCenterBubble() {
38 if (!message_center_visible_)
39 return false;
40 delegate_->HideMessageCenter();
41 message_center_visible_ = false;
42 message_center_->SetMessageCenterVisible(false);
43 NotifyMessageCenterTrayChanged();
44 return true;
45 }
46
47 void MessageCenterTray::ToggleMessageCenterBubble() {
48 if (message_center_visible_)
49 HideMessageCenterBubble();
50 else
51 ShowMessageCenterBubble();
52 }
53
54 void MessageCenterTray::ShowPopupBubble() {
55 if (message_center_visible_) {
56 // We don't want to show popups if the user is already looking at the
57 // message center. Instead, update it.
58 delegate_->UpdateMessageCenter();
59 return;
60 }
61
62 if (popups_visible_) {
63 delegate_->UpdatePopups();
64 NotifyMessageCenterTrayChanged();
65 return;
66 }
67
68 if (!message_center_->HasPopupNotifications())
69 return;
70
71 popups_visible_ = delegate_->ShowPopups();
72 NotifyMessageCenterTrayChanged();
73 }
74
75 bool MessageCenterTray::HidePopupBubble() {
76 if (!popups_visible_)
77 return false;
78
79 delegate_->HidePopups();
80 popups_visible_ = false;
81 NotifyMessageCenterTrayChanged();
82
83 return true;
84 }
85
86 void MessageCenterTray::OnMessageCenterChanged(bool new_notification) {
87 if (message_center_visible_) {
88 if (message_center_->NotificationCount() == 0)
89 HideMessageCenterBubble();
90 else
91 delegate_->UpdateMessageCenter();
92 }
93 if (popups_visible_) {
94 if (message_center_->NotificationCount() == 0)
95 HidePopupBubble();
96 else
97 delegate_->UpdatePopups();
98 }
99
100 if (new_notification)
101 ShowPopupBubble();
102
103 NotifyMessageCenterTrayChanged();
104 }
105
106 void MessageCenterTray::NotifyMessageCenterTrayChanged() {
107 delegate_->OnMessageCenterTrayChanged();
108 }
109
110 } // namespace message_center
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698