tray_date.cc revision f2477e01787aa58f445919b809d89e252beef54f
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/date/tray_date.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/session_state_delegate.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/shell_delegate.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/date/date_view.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/system_tray.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/system_tray_delegate.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/system/tray/system_tray_notifier.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/tray_constants.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/tray_item_view.h" 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/system/tray/tray_popup_header_button.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/i18n/time_formatting.h" 18868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/stringprintf.h" 19868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h" 21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/timer/timer.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/ash_resources.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "grit/ash_strings.h" 24ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/i18n/unicode/datefmt.h" 25ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/i18n/unicode/fieldpos.h" 26ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch#include "third_party/icu/source/i18n/unicode/fmtable.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "third_party/skia/include/core/SkRect.h" 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h" 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image.h" 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/image/image_skia.h" 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h" 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/button/button.h" 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/image_view.h" 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/label.h" 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/box_layout.h" 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/fill_layout.h" 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/painter.h" 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/view.h" 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h" 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 424e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_CHROMEOS) 434e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ash/system/chromeos/system_clock_observer.h" 444e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 454e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kPaddingVertical = 19; 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)} // namespace 51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace ash { 53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace internal { 54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DateDefaultView : public views::View, 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public views::ButtonListener { 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) explicit DateDefaultView(ash::user::LoginStatus login) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : help_(NULL), 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) shutdown_(NULL), 61f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) lock_(NULL), 62f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) date_view_(NULL) { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLayoutManager(new views::FillLayout); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 65f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) date_view_ = new tray::DateView(); 66f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) date_view_->set_border(views::Border::CreateEmptyBorder(kPaddingVertical, 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ash::kTrayPopupPaddingHorizontal, 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0)); 70f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) SpecialPopupRow* view = new SpecialPopupRow(); 71f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) view->SetContent(date_view_); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddChildView(view); 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (login == ash::user::LOGGED_IN_LOCKED || 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) login == ash::user::LOGGED_IN_NONE) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 78f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) date_view_->SetActionable(true); 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 80f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) help_ = new TrayPopupHeaderButton(this, 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDR_AURA_UBER_TRAY_HELP, 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDR_AURA_UBER_TRAY_HELP, 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDR_AURA_UBER_TRAY_HELP_HOVER, 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDR_AURA_UBER_TRAY_HELP_HOVER, 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_ASH_STATUS_TRAY_HELP); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) help_->SetTooltipText(l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_HELP)); 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) view->AddButton(help_); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 898bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#if !defined(OS_WIN) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (login != ash::user::LOGGED_IN_LOCKED && 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) login != ash::user::LOGGED_IN_RETAIL_MODE) { 92f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) shutdown_ = new TrayPopupHeaderButton(this, 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDR_AURA_UBER_TRAY_SHUTDOWN, 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDR_AURA_UBER_TRAY_SHUTDOWN, 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDR_AURA_UBER_TRAY_SHUTDOWN_HOVER, 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDR_AURA_UBER_TRAY_SHUTDOWN_HOVER, 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IDS_ASH_STATUS_TRAY_SHUTDOWN); 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shutdown_->SetTooltipText( 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_SHUTDOWN)); 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) view->AddButton(shutdown_); 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 103c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (ash::Shell::GetInstance()->session_state_delegate()->CanLockScreen()) { 104f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) lock_ = new TrayPopupHeaderButton(this, 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDR_AURA_UBER_TRAY_LOCKSCREEN, 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDR_AURA_UBER_TRAY_LOCKSCREEN, 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDR_AURA_UBER_TRAY_LOCKSCREEN_HOVER, 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDR_AURA_UBER_TRAY_LOCKSCREEN_HOVER, 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) IDS_ASH_STATUS_TRAY_LOCK); 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) lock_->SetTooltipText( 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_LOCK)); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) view->AddButton(lock_); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1148bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#endif // !defined(OS_WIN) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~DateDefaultView() {} 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1191e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) views::View* GetHelpButtonView() const { 1201e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return help_; 1211e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) } 1221e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 123f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) tray::DateView* GetDateView() const { 124f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return date_view_; 125f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) } 126f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from views::ButtonListener. 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void ButtonPressed(views::Button* sender, 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ui::Event& event) OVERRIDE { 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ash::Shell* shell = ash::Shell::GetInstance(); 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ash::ShellDelegate* shell_delegate = shell->delegate(); 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ash::SystemTrayDelegate* tray_delegate = shell->system_tray_delegate(); 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (sender == help_) { 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shell_delegate->RecordUserMetricsAction(ash::UMA_TRAY_HELP); 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tray_delegate->ShowHelp(); 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else if (sender == shutdown_) { 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shell_delegate->RecordUserMetricsAction(ash::UMA_TRAY_SHUT_DOWN); 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tray_delegate->ShutDown(); 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else if (sender == lock_) { 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) shell_delegate->RecordUserMetricsAction(ash::UMA_TRAY_LOCK_SCREEN); 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tray_delegate->RequestLockScreen(); 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } else { 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 148f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TrayPopupHeaderButton* help_; 149f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TrayPopupHeaderButton* shutdown_; 150f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) TrayPopupHeaderButton* lock_; 151f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) tray::DateView* date_view_; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(DateDefaultView); 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TrayDate::TrayDate(SystemTray* system_tray) 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) : SystemTrayItem(system_tray), 1581e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) time_tray_(NULL), 1591e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) default_view_(NULL) { 1604e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#if defined(OS_CHROMEOS) 1614e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) system_clock_observer_.reset(new SystemClockObserver()); 1624e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Shell::GetInstance()->system_tray_notifier()->AddClockObserver(this); 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TrayDate::~TrayDate() { 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Shell::GetInstance()->system_tray_notifier()->RemoveClockObserver(this); 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1701e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)views::View* TrayDate::GetHelpButtonView() const { 1711e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) if (!default_view_) 1721e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return NULL; 173f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return default_view_->GetHelpButtonView(); 1741e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 1751e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)views::View* TrayDate::CreateTrayView(user::LoginStatus status) { 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) CHECK(time_tray_ == NULL); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ClockLayout clock_layout = 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) (system_tray()->shelf_alignment() == SHELF_ALIGNMENT_BOTTOM || 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) system_tray()->shelf_alignment() == SHELF_ALIGNMENT_TOP) ? 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HORIZONTAL_CLOCK : VERTICAL_CLOCK; 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) time_tray_ = new tray::TimeView(clock_layout); 1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::View* view = new TrayItemView(this); 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) view->AddChildView(time_tray_); 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return view; 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)views::View* TrayDate::CreateDefaultView(user::LoginStatus status) { 1891e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) default_view_ = new DateDefaultView(status); 1901e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) return default_view_; 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)views::View* TrayDate::CreateDetailedView(user::LoginStatus status) { 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TrayDate::DestroyTrayView() { 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) time_tray_ = NULL; 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TrayDate::DestroyDefaultView() { 2021e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) default_view_ = NULL; 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TrayDate::DestroyDetailedView() { 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TrayDate::UpdateAfterLoginStatusChange(user::LoginStatus status) { 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TrayDate::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) { 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (time_tray_) { 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ClockLayout clock_layout = (alignment == SHELF_ALIGNMENT_BOTTOM || 2142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) alignment == SHELF_ALIGNMENT_TOP) ? 2152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) HORIZONTAL_CLOCK : VERTICAL_CLOCK; 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) time_tray_->UpdateClockLayout(clock_layout); 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TrayDate::OnDateFormatChanged() { 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (time_tray_) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) time_tray_->UpdateTimeFormat(); 223f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (default_view_) 224f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) default_view_->GetDateView()->UpdateTimeFormat(); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void TrayDate::OnSystemClockTimeUpdated() { 2282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (time_tray_) 2292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) time_tray_->UpdateTimeFormat(); 230f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (default_view_) 231f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) default_view_->GetDateView()->UpdateTimeFormat(); 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void TrayDate::Refresh() { 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (time_tray_) 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) time_tray_->UpdateText(); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace internal 2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 241