Home | History | Annotate | Download | only in brightness
      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_BRIGHTNESS_TRAY_BRIGHTNESS_H_
      6 #define ASH_SYSTEM_BRIGHTNESS_TRAY_BRIGHTNESS_H_
      7 
      8 #include "ash/system/brightness/brightness_observer.h"
      9 #include "ash/system/tray/system_tray_item.h"
     10 #include "base/compiler_specific.h"
     11 #include "base/memory/weak_ptr.h"
     12 
     13 namespace ash {
     14 namespace internal {
     15 
     16 namespace tray {
     17 class BrightnessView;
     18 }
     19 
     20 class TrayBrightness : public SystemTrayItem,
     21                        public BrightnessObserver {
     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   // Overridden from BrightnessObserver.
     48   virtual void OnBrightnessChanged(double percent,
     49                                    bool user_initiated) OVERRIDE;
     50 
     51   base::WeakPtrFactory<TrayBrightness> weak_ptr_factory_;
     52 
     53   tray::BrightnessView* brightness_view_;
     54 
     55   // Was |brightness_view_| created for CreateDefaultView() rather than
     56   // CreateDetailedView()?  Used to avoid resetting |brightness_view_|
     57   // inappropriately in DestroyDefaultView() or DestroyDetailedView().
     58   bool is_default_view_;
     59 
     60   // Brightness level in the range [0.0, 100.0] that we've heard about most
     61   // recently.
     62   double current_percent_;
     63 
     64   // Has |current_percent_| been initialized?
     65   bool got_current_percent_;
     66 
     67   DISALLOW_COPY_AND_ASSIGN(TrayBrightness);
     68 };
     69 
     70 }  // namespace internal
     71 }  // namespace ash
     72 
     73 #endif  // ASH_SYSTEM_BRIGHTNESS_TRAY_BRIGHTNESS_H_
     74