Index: ash/system/date/date_view.h |
diff --git a/ash/system/date/date_view.h b/ash/system/date/date_view.h |
index 787ca690978f7dc829ceedb9f0f9318ff4164f0e..d605815261de6bc88ee0bcd4a7499a41c0b4ec0b 100644 |
--- a/ash/system/date/date_view.h |
+++ b/ash/system/date/date_view.h |
@@ -19,42 +19,81 @@ namespace ash { |
namespace internal { |
namespace tray { |
-// This view is used for both the TrayDate tray icon and the TrayPower popup. |
-class DateView : public ActionableView { |
+// Abstract base class containing common updating and layout code for the |
+// DateView popup and the TimeView tray icon. |
+class BaseDateTimeView : public ActionableView { |
public: |
- enum TimeType { |
- TIME, |
- DATE |
- }; |
+ virtual ~BaseDateTimeView(); |
- explicit DateView(TimeType type); |
+ // Updates the displayed text for the current time. |
+ void UpdateText(); |
+ |
+ protected: |
+ BaseDateTimeView(); |
+ |
+ private: |
+ // Updates labels to display the current time. |
+ virtual void UpdateTextInternal(const base::Time& now) = 0; |
+ |
+ // Overridden from views::View. |
+ virtual void OnLocaleChanged() OVERRIDE; |
+ |
+ base::OneShotTimer<BaseDateTimeView> timer_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(BaseDateTimeView); |
+}; |
+ |
+// Popup view used to display the date and day of week. |
+class DateView : public BaseDateTimeView { |
+ public: |
+ DateView(); |
virtual ~DateView(); |
- void UpdateTimeFormat(); |
- views::Label* label() const { return label_; } |
// Sets whether the view is actionable. An actionable date view gives visual |
// feedback on hover, can be focused by keyboard, and clicking/pressing space |
// or enter on the view shows date-related settings. |
void SetActionable(bool actionable); |
- void UpdateText(); |
- |
private: |
+ // Overridden from BaseDateTimeView. |
+ virtual void UpdateTextInternal(const base::Time& now) OVERRIDE; |
+ |
// Overridden from ActionableView. |
virtual bool PerformAction(const views::Event& event) OVERRIDE; |
- // Overridden from views::View. |
- virtual void OnLocaleChanged() OVERRIDE; |
+ views::Label* date_label_; |
+ views::Label* day_of_week_label_; |
- base::OneShotTimer<DateView> timer_; |
- base::HourClockType hour_type_; |
- TimeType type_; |
bool actionable_; |
- views::Label* label_; |
DISALLOW_COPY_AND_ASSIGN(DateView); |
}; |
+// Tray view used to display the current time. |
+class TimeView : public BaseDateTimeView { |
+ public: |
+ TimeView(); |
+ virtual ~TimeView(); |
+ |
+ views::Label* label() const { return label_; } |
+ |
+ // Updates the format of the displayed time. |
+ void UpdateTimeFormat(); |
+ |
+ private: |
+ // Overridden from BaseDateTimeView. |
+ virtual void UpdateTextInternal(const base::Time& now) OVERRIDE; |
+ |
+ // Overridden from ActionableView. |
+ virtual bool PerformAction(const views::Event& event) OVERRIDE; |
+ |
+ views::Label* label_; |
+ |
+ base::HourClockType hour_type_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(TimeView); |
+}; |
+ |
} // namespace tray |
} // namespace internal |
} // namespace ash |