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

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: Merge with master, address comments. 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/observer_list.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(
16 MessageCenterTrayDelegate* delegate,
17 message_center::MessageCenter* message_center)
18 : message_center_(message_center),
19 message_center_visible_(false),
20 popups_visible_(false),
21 delegate_(delegate) {
22 message_center_->AddObserver(this);
23 }
24
25 MessageCenterTray::~MessageCenterTray() {
26 message_center_->RemoveObserver(this);
27 }
28
29 void MessageCenterTray::ShowMessageCenterBubble() {
30 if (message_center_visible_)
31 return;
32
33 message_center_->SetMessageCenterVisible(true);
34 HidePopupBubble();
35
36 message_center::MessageCenterBubble* bubble =
37 new message_center::MessageCenterBubble(message_center_);
38 message_center_visible_ = delegate_->ShowMessageCenter(bubble);
Pete Williamson 2013/01/24 19:41:59 Do we need some error handling here if ShowMessage
dewittj 2013/01/25 00:49:04 At this point I'm leaving error handling up to the
39 }
40
41 bool MessageCenterTray::HideMessageCenterBubble() {
42 if (!message_center_visible_)
43 return false;
44 delegate_->HideMessageCenter();
45 message_center_visible_ = false;
46 message_center_->SetMessageCenterVisible(false);
47 NotifyMessageCenterTrayChanged();
48 return true;
49 }
50
51 void MessageCenterTray::ToggleMessageCenterBubble() {
Pete Williamson 2013/01/24 19:41:59 Do we really use this function? If not, this may
dewittj 2013/01/25 00:49:04 It is used in WebNotificationTrayWin.
52 if (message_center_visible_)
53 HideMessageCenterBubble();
54 else
55 ShowMessageCenterBubble();
56 }
57
58 void MessageCenterTray::ShowPopupBubble() {
59 if (message_center_visible_)
Pete Williamson 2013/01/24 19:41:59 This seems a bit strange - if we ask for a popup b
dewittj 2013/01/25 00:49:04 Yes, though I should probably throw in an UpdateMe
60 return;
61
62 if (popups_visible_) {
63 delegate_->UpdatePopups();
64 NotifyMessageCenterTrayChanged();
65 return;
66 }
67
68 if (!message_center_->HasPopupNotifications())
69 return;
70
71 message_center::MessagePopupBubble* bubble =
72 new message_center::MessagePopupBubble(message_center_);
73 popups_visible_ = delegate_->ShowPopups(bubble);
74 }
75
76 bool MessageCenterTray::HidePopupBubble() {
77 if (!popups_visible_)
78 return false;
79
80 delegate_->HidePopups();
81 popups_visible_ = false;
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 NotifyMessageCenterTrayChanged();
101 if (new_notification)
102 ShowPopupBubble();
103 }
104
105 void MessageCenterTray::NotifyMessageCenterTrayChanged() {
106 delegate_->OnMessageCenterTrayChanged();
107 }
108
109 } // namespace ui
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698