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 tray {
     15 class BrightnessView;
     16 }
     17 
     18 class ASH_EXPORT TrayBrightness
     19     : public SystemTrayItem,
     20       public chromeos::PowerManagerClient::Observer {
     21  public:
     22   explicit TrayBrightness(SystemTray* system_tray);
     23   virtual ~TrayBrightness();
     24 
     25  private:
     26   friend class TrayBrightnessTest;
     27 
     28   // Sends a request to get the current screen brightness so |current_percent_|
     29   // can be initialized.
     30   void GetInitialBrightness();
     31 
     32   // Updates |current_percent_| with the initial brightness requested by
     33   // GetInitialBrightness(), if we haven't seen the brightness already in the
     34   // meantime.
     35   void HandleInitialBrightness(double percent);
     36 
     37   // Overridden from SystemTrayItem.
     38   virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE;
     39   virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE;
     40   virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE;
     41   virtual void DestroyTrayView() OVERRIDE;
     42   virtual void DestroyDefaultView() OVERRIDE;
     43   virtual void DestroyDetailedView() OVERRIDE;
     44   virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE;
     45   virtual bool ShouldHideArrow() const OVERRIDE;
     46   virtual bool ShouldShowShelf() const OVERRIDE;
     47 
     48   // Overriden from PowerManagerClient::Observer.
     49   virtual void BrightnessChanged(int level, bool user_initiated) OVERRIDE;
     50 
     51   void HandleBrightnessChanged(double percent, bool user_initiated);
     52 
     53   tray::BrightnessView* brightness_view_;
     54 
     55   // Brightness level in the range [0.0, 100.0] that we've heard about most
     56   // recently.
     57   double current_percent_;
     58 
     59   // Has |current_percent_| been initialized?
     60   bool got_current_percent_;
     61 
     62   base::WeakPtrFactory<TrayBrightness> weak_ptr_factory_;
     63 
     64   DISALLOW_COPY_AND_ASSIGN(TrayBrightness);
     65 };
     66 
     67 }  // namespace ash
     68 
     69 #endif  // ASH_SYSTEM_CHROMEOS_BRIGHTNESS_TRAY_BRIGHTNESS_H_
     70