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 12namespace views { 13class ImageView; 14class Label; 15} 16 17namespace ash { 18 19class 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