Chromium Code Reviews| Index: ash/system/date/date_default_view.cc |
| diff --git a/ash/system/date/date_default_view.cc b/ash/system/date/date_default_view.cc |
| index bd05be2c88a22bb2d04915b9dbe1a15a1055a95c..3528612778ee3a6044eb46ee0dc2a74f9fca15ab 100644 |
| --- a/ash/system/date/date_default_view.cc |
| +++ b/ash/system/date/date_default_view.cc |
| @@ -12,6 +12,7 @@ |
| #include "ash/system/tray/system_tray_delegate.h" |
| #include "ash/system/tray/tray_constants.h" |
| #include "ash/system/tray/tray_popup_header_button.h" |
| +#include "base/bind.h" |
| #include "grit/ash_resources.h" |
| #include "grit/ash_strings.h" |
| #include "ui/base/l10n/l10n_util.h" |
| @@ -30,9 +31,11 @@ namespace ash { |
| DateDefaultView::DateDefaultView(ash::user::LoginStatus login) |
| : help_(NULL), |
| + reboot_(NULL), |
| shutdown_(NULL), |
| lock_(NULL), |
| - date_view_(NULL) { |
| + date_view_(NULL), |
| + weak_factory_(this) { |
| SetLayoutManager(new views::FillLayout); |
| date_view_ = new tray::DateView(); |
| @@ -73,6 +76,15 @@ DateDefaultView::DateDefaultView(ash::user::LoginStatus login) |
| shutdown_->SetTooltipText( |
| l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SHUTDOWN)); |
| view->AddButton(shutdown_); |
| + |
| + reboot_ = new TrayPopupHeaderButton( |
| + this, IDR_AURA_UBER_TRAY_SHUTDOWN, IDR_AURA_UBER_TRAY_SHUTDOWN, |
| + IDR_AURA_UBER_TRAY_SHUTDOWN_HOVER, IDR_AURA_UBER_TRAY_SHUTDOWN_HOVER, |
| + IDS_ASH_STATUS_TRAY_REBOOT); |
| + reboot_->SetTooltipText( |
| + l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_REBOOT)); |
| + reboot_->SetVisible(false); |
| + view->AddButton(reboot_); |
|
stevenjb
2014/12/17 19:09:02
Rather than having two separate buttons and the UI
cschuet (SLOW)
2015/01/07 14:37:07
Done.
|
| } |
| if (ash::Shell::GetInstance()->session_state_delegate()->CanLockScreen()) { |
| @@ -85,10 +97,28 @@ DateDefaultView::DateDefaultView(ash::user::LoginStatus login) |
| lock_->SetTooltipText(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_LOCK)); |
| view->AddButton(lock_); |
| } |
| + SystemTrayDelegate* systemTrayDelegate = |
|
stevenjb
2014/12/17 19:09:02
system_tray_delegate
cschuet (SLOW)
2015/01/07 14:37:07
Done.
|
| + Shell::GetInstance()->system_tray_delegate(); |
| + systemTrayDelegate->AddShutdownPolicyObserver(this); |
| + systemTrayDelegate->ShouldRebootOnShutdown(base::Bind( |
| + &DateDefaultView::OnShutdownPolicyChanged, weak_factory_.GetWeakPtr())); |
| #endif // !defined(OS_WIN) |
| } |
| DateDefaultView::~DateDefaultView() { |
| + // We need the check as on shell destruction, the delegate is destroyed first. |
| + SystemTrayDelegate* system_tray_delegate = |
| + Shell::GetInstance()->system_tray_delegate(); |
| + if (system_tray_delegate) |
| + system_tray_delegate->RemoveShutdownPolicyObserver(this); |
| +} |
| + |
| +views::View* DateDefaultView::GetShutdownButtonView() { |
| + return shutdown_; |
| +} |
| + |
| +views::View* DateDefaultView::GetRebootButtonView() { |
| + return reboot_; |
| } |
| views::View* DateDefaultView::GetHelpButtonView() { |
| @@ -110,6 +140,8 @@ void DateDefaultView::ButtonPressed(views::Button* sender, |
| if (sender == help_) { |
| shell->metrics()->RecordUserMetricsAction(ash::UMA_TRAY_HELP); |
| tray_delegate->ShowHelp(); |
| + } else if (sender == reboot_) { |
|
Daniel Erat
2014/12/17 16:21:04
you should probably add a metric for this to match
cschuet (SLOW)
2015/01/07 14:37:07
I have followed stevenjb's suggestion and there is
|
| + tray_delegate->Restart(); |
| } else if (sender == shutdown_) { |
| shell->metrics()->RecordUserMetricsAction(ash::UMA_TRAY_SHUT_DOWN); |
| tray_delegate->ShutDown(); |
| @@ -121,4 +153,9 @@ void DateDefaultView::ButtonPressed(views::Button* sender, |
| } |
| } |
| +void DateDefaultView::OnShutdownPolicyChanged(bool reboot_on_shutdown) { |
| + shutdown_->SetVisible(!reboot_on_shutdown); |
| + reboot_->SetVisible(reboot_on_shutdown); |
| +} |
| + |
| } // namespace ash |