| OLD | NEW | 
| (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 | 
| OLD | NEW |