tray_date.h revision c5cede9ae108bb15f6b7a8aea21c7e1fefa2834c
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.
4
5#ifndef ASH_SYSTEM_DATE_TRAY_DATE_H_
6#define ASH_SYSTEM_DATE_TRAY_DATE_H_
7
8#include "ash/ash_export.h"
9#include "ash/system/date/clock_observer.h"
10#include "ash/system/tray/system_tray_item.h"
11#include "base/memory/scoped_ptr.h"
12
13namespace views {
14class Label;
15}
16
17namespace ash {
18class DateDefaultView;
19#if defined(OS_CHROMEOS)
20class SystemClockObserver;
21#endif
22
23namespace tray {
24class TimeView;
25}
26
27class ASH_EXPORT TrayDate : public SystemTrayItem, public ClockObserver {
28 public:
29  enum ClockLayout {
30   HORIZONTAL_CLOCK,
31   VERTICAL_CLOCK,
32  };
33  explicit TrayDate(SystemTray* system_tray);
34  virtual ~TrayDate();
35
36  // Returns view for help button if it is exists. Returns NULL otherwise.
37  views::View* GetHelpButtonView() const;
38
39  const tray::TimeView* GetTimeTrayForTesting() const;
40  const DateDefaultView* GetDefaultViewForTesting() const;
41  views::View* CreateDefaultViewForTesting(user::LoginStatus status);
42
43 private:
44  // Overridden from SystemTrayItem.
45  virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE;
46  virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE;
47  virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE;
48  virtual void DestroyTrayView() OVERRIDE;
49  virtual void DestroyDefaultView() OVERRIDE;
50  virtual void DestroyDetailedView() OVERRIDE;
51  virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE;
52  virtual void UpdateAfterShelfAlignmentChange(
53      ShelfAlignment alignment) OVERRIDE;
54
55  // Overridden from ClockObserver.
56  virtual void OnDateFormatChanged() OVERRIDE;
57  virtual void OnSystemClockTimeUpdated() OVERRIDE;
58  virtual void Refresh() OVERRIDE;
59
60  void SetupLabelForTimeTray(views::Label* label);
61
62  tray::TimeView* time_tray_;
63  DateDefaultView* default_view_;
64
65#if defined(OS_CHROMEOS)
66  scoped_ptr<SystemClockObserver> system_clock_observer_;
67#endif
68
69  DISALLOW_COPY_AND_ASSIGN(TrayDate);
70};
71
72}  // namespace ash
73
74#endif  // ASH_SYSTEM_DATE_TRAY_DATE_H_
75