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
3 // found in the LICENSE file.
5 #include "ash/system/date/tray_date.h"
8 #include "ash/system/date/date_default_view.h"
9 #include "ash/system/date/date_view.h"
10 #include "ash/system/tray/system_tray.h"
11 #include "ash/system/tray/system_tray_notifier.h"
12 #include "ash/system/tray/tray_item_view.h"
14 #if defined(OS_CHROMEOS)
15 #include "ash/system/chromeos/system_clock_observer.h"
21 TrayDate::TrayDate(SystemTray* system_tray)
22 : SystemTrayItem(system_tray),
25 #if defined(OS_CHROMEOS)
26 system_clock_observer_.reset(new SystemClockObserver());
28 Shell::GetInstance()->system_tray_notifier()->AddClockObserver(this);
31 TrayDate::~TrayDate() {
32 Shell::GetInstance()->system_tray_notifier()->RemoveClockObserver(this);
35 views::View* TrayDate::GetHelpButtonView() const {
38 return default_view_->GetHelpButtonView();
41 const tray::TimeView* TrayDate::GetTimeTrayForTesting() const {
45 const DateDefaultView* TrayDate::GetDefaultViewForTesting() const {
49 views::View* TrayDate::CreateDefaultViewForTesting(user::LoginStatus status) {
50 return CreateDefaultView(status);
53 views::View* TrayDate::CreateTrayView(user::LoginStatus status) {
54 CHECK(time_tray_ == NULL);
55 ClockLayout clock_layout =
56 (system_tray()->shelf_alignment() == SHELF_ALIGNMENT_BOTTOM ||
57 system_tray()->shelf_alignment() == SHELF_ALIGNMENT_TOP) ?
58 HORIZONTAL_CLOCK : VERTICAL_CLOCK;
59 time_tray_ = new tray::TimeView(clock_layout);
60 views::View* view = new TrayItemView(this);
61 view->AddChildView(time_tray_);
65 views::View* TrayDate::CreateDefaultView(user::LoginStatus status) {
66 default_view_ = new DateDefaultView(status);
70 views::View* TrayDate::CreateDetailedView(user::LoginStatus status) {
74 void TrayDate::DestroyTrayView() {
78 void TrayDate::DestroyDefaultView() {
82 void TrayDate::DestroyDetailedView() {
85 void TrayDate::UpdateAfterLoginStatusChange(user::LoginStatus status) {
88 void TrayDate::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) {
90 ClockLayout clock_layout = (alignment == SHELF_ALIGNMENT_BOTTOM ||
91 alignment == SHELF_ALIGNMENT_TOP) ?
92 HORIZONTAL_CLOCK : VERTICAL_CLOCK;
93 time_tray_->UpdateClockLayout(clock_layout);
97 void TrayDate::OnDateFormatChanged() {
99 time_tray_->UpdateTimeFormat();
101 default_view_->GetDateView()->UpdateTimeFormat();
104 void TrayDate::OnSystemClockTimeUpdated() {
106 time_tray_->UpdateTimeFormat();
108 default_view_->GetDateView()->UpdateTimeFormat();
111 void TrayDate::Refresh() {
113 time_tray_->UpdateText();
116 } // namespace internal