Chromium Code Reviews| Index: ash/system/status_area_widget.cc |
| diff --git a/ash/system/status_area_widget.cc b/ash/system/status_area_widget.cc |
| index f0ae1d011962800493d8f33a8df2a7e57476aafe..c83ced0336429b38a8ee8fb2f71edde59507e4e2 100644 |
| --- a/ash/system/status_area_widget.cc |
| +++ b/ash/system/status_area_widget.cc |
| @@ -12,6 +12,7 @@ |
| #include "ash/system/status_area_widget_delegate.h" |
| #include "ash/system/tray/system_tray.h" |
| #include "ash/system/tray/system_tray_delegate.h" |
| +#include "ash/system/web_notification/web_notification_tray.h" |
| #include "base/i18n/time_formatting.h" |
| #include "base/utf_string_conversions.h" |
| #include "ui/aura/window.h" |
| @@ -281,7 +282,8 @@ namespace internal { |
| StatusAreaWidget::StatusAreaWidget() |
| : widget_delegate_(new internal::StatusAreaWidgetDelegate), |
| - system_tray_(NULL) { |
| + system_tray_(NULL), |
| + web_notification_tray_(NULL) { |
| views::Widget::InitParams params( |
| views::Widget::InitParams::TYPE_WINDOW_FRAMELESS); |
| params.delegate = widget_delegate_; |
| @@ -299,6 +301,7 @@ StatusAreaWidget::~StatusAreaWidget() { |
| } |
| void StatusAreaWidget::CreateTrayViews(ShellDelegate* shell_delegate) { |
| + AddWebNotificationTray(new WebNotificationTray(this)); |
| AddSystemTray(new SystemTray(), shell_delegate); |
| } |
| @@ -308,6 +311,8 @@ void StatusAreaWidget::Shutdown() { |
| // in the destructor if Shutdown() is not called (e.g. in tests). |
| delete system_tray_; |
| system_tray_ = NULL; |
| + delete web_notification_tray_; |
| + web_notification_tray_ = NULL; |
| } |
| void StatusAreaWidget::AddSystemTray(SystemTray* system_tray, |
| @@ -326,9 +331,50 @@ void StatusAreaWidget::AddSystemTray(SystemTray* system_tray, |
| system_tray->CreateItems(); // Called after delegate is created. |
| } |
| +void StatusAreaWidget::AddWebNotificationTray( |
| + WebNotificationTray* web_notification_tray) { |
| + web_notification_tray_ = web_notification_tray; |
| + widget_delegate_->AddTray(web_notification_tray); |
| +} |
| + |
| void StatusAreaWidget::SetShelfAlignment(ShelfAlignment alignment) { |
| widget_delegate_->set_alignment(alignment); |
| widget_delegate_->UpdateLayout(); |
| + if (system_tray_) |
| + system_tray_->SetShelfAlignment(alignment); |
| + if (web_notification_tray_) |
| + web_notification_tray_->SetShelfAlignment(alignment); |
| +} |
| + |
| +void StatusAreaWidget::SetPaintsBackground( |
| + bool value, |
|
sadrul
2012/06/13 16:37:56
less indentation
stevenjb
2012/06/13 19:05:02
Done.
|
| + internal::BackgroundAnimator::ChangeType change_type) { |
| + if (system_tray_) |
| + system_tray_->SetPaintsBackground(value, change_type); |
| + if (web_notification_tray_) |
| + web_notification_tray_->SetPaintsBackground(value, change_type); |
| +} |
| + |
| +void StatusAreaWidget::ShowWebNotificationBubble(UserAction user_action) { |
| + // If not triggered by a user action, only show the web notification bubble |
| + // if the system tray is not visible. |
| + if (user_action == USER_ACTION && |
| + system_tray_ && system_tray_->IsBubbleVisible()) { |
| + return; |
| + } |
| + DCHECK(web_notification_tray_); |
| + web_notification_tray_->ShowBubble(); |
| + // Disable showing system notifications while viewing web notifications. |
| + if (system_tray_) |
| + system_tray_->SetHideNotifications(true); |
|
sadrul
2012/06/13 16:37:56
Just to clarify: with this change, both the system
stevenjb
2012/06/13 19:05:02
No, only one should be visible at a time, but that
|
| +} |
| + |
| +void StatusAreaWidget::HideWebNotificationBubble() { |
| + DCHECK(web_notification_tray_); |
| + web_notification_tray_->HideBubble(); |
| + // Show any hidden or suppressed system notifications. |
| + if (system_tray_) |
| + system_tray_->SetHideNotifications(false); |
| } |
| } // namespace internal |