Home | History | Annotate | Download | only in brightness
      1 // Copyright 2013 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_BRIGHTNESS_TRAY_BRIGHTNESS_H_
      6 #define ASH_SYSTEM_CHROMEOS_BRIGHTNESS_TRAY_BRIGHTNESS_H_
      7 
      8 #include "ash/system/tray/system_tray_item.h"
      9 #include "base/compiler_specific.h"
     10 #include "base/memory/weak_ptr.h"
     11 #include "chromeos/dbus/power_manager_client.h"
     12 
     13 namespace ash {
     14 namespace internal {
     15 
     16 namespace tray {
     17 class BrightnessView;
     18 }
     19 
     20 class TrayBrightness : public SystemTrayItem,
     21                        public chromeos::PowerManagerClient::Observer {
     22  public:
     23   explicit TrayBrightness(SystemTray* system_tray);
     24   virtual ~TrayBrightness();
     25 
     26  private:
     27   // Sends a request to get the current screen brightness so |current_percent_|
     28   // can be initialized.
     29   void GetInitialBrightness();
     30 
     31   // Updates |current_percent_| with the initial brightness requested by
     32   // GetInitialBrightness(), if we haven't seen the brightness already in the
     33   // meantime.
     34   void HandleInitialBrightness(double percent);
     35 
     36   // Overridden from SystemTrayItem.
     37   virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE;
     38   virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE;
     39   virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE;
     40   virtual void DestroyTrayView() OVERRIDE;
     41   virtual void DestroyDefaultView() OVERRIDE;
     42   virtual void DestroyDetailedView() OVERRIDE;
     43   virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE;
     44   virtual bool ShouldHideArrow() const OVERRIDE;
     45   virtual bool ShouldShowLauncher() const OVERRIDE;
     46 
     47   // Overriden from PowerManagerClient::Observer.
     48   virtual void BrightnessChanged(int level, bool user_initiated) OVERRIDE;
     49 
     50   void HandleBrightnessChanged(double percent, bool user_initiated);
     51 
     52   base::WeakPtrFactory<TrayBrightness> weak_ptr_factory_;
     53 
     54   tray::BrightnessView* brightness_view_;
     55 
     56   // Was |brightness_view_| created for CreateDefaultView() rather than
     57   // CreateDetailedView()?  Used to avoid resetting |brightness_view_|
     58   // inappropriately in DestroyDefaultView() or DestroyDetailedView().
     59   bool is_default_view_;
     60 
     61   // Brightness level in the range [0.0, 100.0] that we've heard about most
     62   // recently.
     63   double current_percent_;
     64 
     65   // Has |current_percent_| been initialized?
     66   bool got_current_percent_;
     67 
     68   DISALLOW_COPY_AND_ASSIGN(TrayBrightness);
     69 };
     70 
     71 }  // namespace internal
     72 }  // namespace ash
     73 
     74 #endif  // ASH_SYSTEM_CHROMEOS_BRIGHTNESS_TRAY_BRIGHTNESS_H_
     75