• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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_CHROMEOS_POWER_POWER_STATUS_VIEW_H_
6 #define ASH_SYSTEM_CHROMEOS_POWER_POWER_STATUS_VIEW_H_
7 
8 #include "ash/ash_export.h"
9 #include "ash/system/chromeos/power/power_status.h"
10 #include "ui/views/view.h"
11 
12 namespace views {
13 class ImageView;
14 class Label;
15 }
16 
17 namespace ash {
18 
19 class ASH_EXPORT PowerStatusView : public views::View,
20                                    public PowerStatus::Observer {
21  public:
22   enum ViewType {
23     VIEW_DEFAULT,
24     VIEW_NOTIFICATION
25   };
26 
27   PowerStatusView(ViewType view_type, bool default_view_right_align);
28   virtual ~PowerStatusView();
29 
30   // Overridden from views::View.
31   virtual gfx::Size GetPreferredSize() const OVERRIDE;
32   virtual int GetHeightForWidth(int width) const OVERRIDE;
33   virtual void Layout() OVERRIDE;
34 
35   // Overridden from PowerStatus::Observer.
36   virtual void OnPowerStatusChanged() OVERRIDE;
37 
38  private:
39   friend class PowerStatusDefaultViewTest;
40   friend class PowerStatusNotificationViewTest;
41 
42   void LayoutDefaultView();
43   void LayoutNotificationView();
44   void UpdateTextForDefaultView();
45   void UpdateTextForNotificationView();
46 
47   // Overridden from views::View.
48   virtual void ChildPreferredSizeChanged(views::View* child) OVERRIDE;
49 
50   // Layout default view UI items on the right side of system tray pop up item
51   // if true; otherwise, layout the UI items on the left side.
52   bool default_view_right_align_;
53 
54   // Labels used only for VIEW_NOTIFICATION.
55   views::Label* status_label_;
56   views::Label* time_label_;
57 
58   // Labels used only for VIEW_DEFAULT.
59   views::Label* time_status_label_;
60   views::Label* percentage_label_;
61 
62   // Battery status indicator icon.
63   views::ImageView* icon_;
64 
65   ViewType view_type_;
66 
67   DISALLOW_COPY_AND_ASSIGN(PowerStatusView);
68 };
69 
70 }  // namespace ash
71 
72 #endif  // ASH_SYSTEM_CHROMEOS_POWER_POWER_STATUS_VIEW_H_
73