Home | History | Annotate | Download | only in power
      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