| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/system/web_notification/web_notification_tray.h" | 5 #include "ash/system/web_notification/web_notification_tray.h" |
| 6 | 6 |
| 7 #include "ash/shell.h" | 7 #include "ash/shell.h" |
| 8 #include "ash/shell_window_ids.h" | 8 #include "ash/shell_window_ids.h" |
| 9 #include "ash/system/status_area_widget.h" | 9 #include "ash/system/status_area_widget.h" |
| 10 #include "ash/system/tray/tray_bubble_wrapper.h" | 10 #include "ash/system/tray/tray_bubble_wrapper.h" |
| (...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 81 WebNotificationTray::WebNotificationTray( | 81 WebNotificationTray::WebNotificationTray( |
| 82 internal::StatusAreaWidget* status_area_widget) | 82 internal::StatusAreaWidget* status_area_widget) |
| 83 : internal::TrayBackgroundView(status_area_widget), | 83 : internal::TrayBackgroundView(status_area_widget), |
| 84 button_(NULL), | 84 button_(NULL), |
| 85 show_message_center_on_unlock_(false) { | 85 show_message_center_on_unlock_(false) { |
| 86 message_center_.reset(new message_center::MessageCenter(this)); | 86 message_center_.reset(new message_center::MessageCenter(this)); |
| 87 button_ = new views::ImageButton(this); | 87 button_ = new views::ImageButton(this); |
| 88 button_->set_triggerable_event_flags( | 88 button_->set_triggerable_event_flags( |
| 89 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON); | 89 ui::EF_LEFT_MOUSE_BUTTON | ui::EF_RIGHT_MOUSE_BUTTON); |
| 90 tray_container()->AddChildView(button_); | 90 tray_container()->AddChildView(button_); |
| 91 SetVisible(false); |
| 91 UpdateTray(); | 92 UpdateTray(); |
| 92 } | 93 } |
| 93 | 94 |
| 94 WebNotificationTray::~WebNotificationTray() { | 95 WebNotificationTray::~WebNotificationTray() { |
| 95 // message_center_ has a weak pointer to this; destroy it early. | 96 // message_center_ has a weak pointer to this; destroy it early. |
| 96 message_center_.reset(); | 97 message_center_.reset(); |
| 97 // Release any child views that might have back pointers before ~View(). | 98 // Release any child views that might have back pointers before ~View(). |
| 98 message_center_bubble_.reset(); | 99 message_center_bubble_.reset(); |
| 99 popup_bubble_.reset(); | 100 popup_bubble_.reset(); |
| 100 if (quiet_mode_bubble() && quiet_mode_bubble_->GetBubbleWidget()) | 101 if (quiet_mode_bubble() && quiet_mode_bubble_->GetBubbleWidget()) |
| (...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 191 if (message_center_bubble()) { | 192 if (message_center_bubble()) { |
| 192 message_center_bubble_.reset(); | 193 message_center_bubble_.reset(); |
| 193 show_message_center_on_unlock_ = true; | 194 show_message_center_on_unlock_ = true; |
| 194 } | 195 } |
| 195 HidePopupBubble(); | 196 HidePopupBubble(); |
| 196 } else { | 197 } else { |
| 197 if (show_message_center_on_unlock_) | 198 if (show_message_center_on_unlock_) |
| 198 ShowMessageCenterBubble(); | 199 ShowMessageCenterBubble(); |
| 199 show_message_center_on_unlock_ = false; | 200 show_message_center_on_unlock_ = false; |
| 200 } | 201 } |
| 202 // The status icon should be always visible except for lock screen / login |
| 203 // screen, to allow quiet mode and settings. |
| 204 SetVisible((login_status != user::LOGGED_IN_NONE) && |
| 205 (login_status != user::LOGGED_IN_LOCKED)); |
| 201 UpdateTray(); | 206 UpdateTray(); |
| 202 } | 207 } |
| 203 | 208 |
| 204 bool WebNotificationTray::IsMessageCenterBubbleVisible() const { | 209 bool WebNotificationTray::IsMessageCenterBubbleVisible() const { |
| 205 return (message_center_bubble() && | 210 return (message_center_bubble() && |
| 206 message_center_bubble_->bubble()->IsVisible()); | 211 message_center_bubble_->bubble()->IsVisible()); |
| 207 } | 212 } |
| 208 | 213 |
| 209 bool WebNotificationTray::IsMouseInNotificationBubble() const { | 214 bool WebNotificationTray::IsMouseInNotificationBubble() const { |
| 210 if (!popup_bubble()) | 215 if (!popup_bubble()) |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 IDR_AURA_UBER_TRAY_NOTIFY_BUTTON_INACTIVE_NORMAL)); | 354 IDR_AURA_UBER_TRAY_NOTIFY_BUTTON_INACTIVE_NORMAL)); |
| 350 button_->SetImage(views::CustomButton::STATE_HOVERED, rb.GetImageSkiaNamed( | 355 button_->SetImage(views::CustomButton::STATE_HOVERED, rb.GetImageSkiaNamed( |
| 351 IDR_AURA_UBER_TRAY_NOTIFY_BUTTON_INACTIVE_HOVER)); | 356 IDR_AURA_UBER_TRAY_NOTIFY_BUTTON_INACTIVE_HOVER)); |
| 352 button_->SetImage(views::CustomButton::STATE_PRESSED, rb.GetImageSkiaNamed( | 357 button_->SetImage(views::CustomButton::STATE_PRESSED, rb.GetImageSkiaNamed( |
| 353 IDR_AURA_UBER_TRAY_NOTIFY_BUTTON_INACTIVE_PRESSED)); | 358 IDR_AURA_UBER_TRAY_NOTIFY_BUTTON_INACTIVE_PRESSED)); |
| 354 } | 359 } |
| 355 if (message_center_bubble()) | 360 if (message_center_bubble()) |
| 356 button_->SetState(views::CustomButton::STATE_PRESSED); | 361 button_->SetState(views::CustomButton::STATE_PRESSED); |
| 357 else | 362 else |
| 358 button_->SetState(views::CustomButton::STATE_NORMAL); | 363 button_->SetState(views::CustomButton::STATE_NORMAL); |
| 359 bool is_visible = | |
| 360 (status_area_widget()->login_status() != user::LOGGED_IN_NONE) && | |
| 361 (status_area_widget()->login_status() != user::LOGGED_IN_LOCKED) && | |
| 362 (message_center_->NotificationCount() > 0); | |
| 363 SetVisible(is_visible); | |
| 364 Layout(); | 364 Layout(); |
| 365 SchedulePaint(); | 365 SchedulePaint(); |
| 366 } | 366 } |
| 367 | 367 |
| 368 bool WebNotificationTray::ClickedOutsideBubble() { | 368 bool WebNotificationTray::ClickedOutsideBubble() { |
| 369 // Only hide the message center and quiet mode bubble. | 369 // Only hide the message center and quiet mode bubble. |
| 370 if (!message_center_bubble() && !quiet_mode_bubble()) | 370 if (!message_center_bubble() && !quiet_mode_bubble()) |
| 371 return false; | 371 return false; |
| 372 quiet_mode_bubble_.reset(); | 372 quiet_mode_bubble_.reset(); |
| 373 HideMessageCenterBubble(); | 373 HideMessageCenterBubble(); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 386 | 386 |
| 387 message_center::MessagePopupBubble* | 387 message_center::MessagePopupBubble* |
| 388 WebNotificationTray::GetPopupBubbleForTest() { | 388 WebNotificationTray::GetPopupBubbleForTest() { |
| 389 if (!popup_bubble_.get()) | 389 if (!popup_bubble_.get()) |
| 390 return NULL; | 390 return NULL; |
| 391 return static_cast<message_center::MessagePopupBubble*>( | 391 return static_cast<message_center::MessagePopupBubble*>( |
| 392 popup_bubble_->bubble()); | 392 popup_bubble_->bubble()); |
| 393 } | 393 } |
| 394 | 394 |
| 395 } // namespace ash | 395 } // namespace ash |
| OLD | NEW |