// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ASH_SYSTEM_BRIGHTNESS_TRAY_BRIGHTNESS_H_ #define ASH_SYSTEM_BRIGHTNESS_TRAY_BRIGHTNESS_H_ #include "ash/system/brightness/brightness_observer.h" #include "ash/system/tray/system_tray_item.h" #include "base/compiler_specific.h" #include "base/memory/weak_ptr.h" namespace ash { namespace internal { namespace tray { class BrightnessView; } class TrayBrightness : public SystemTrayItem, public BrightnessObserver { public: TrayBrightness(); virtual ~TrayBrightness(); private: // Sends a request to get the current screen brightness so |current_percent_| // can be initialized. void GetInitialBrightness(); // Updates |current_percent_| with the initial brightness requested by // GetInitialBrightness(), if we haven't seen the brightness already in the // meantime. void HandleInitialBrightness(double percent); // Overridden from SystemTrayItem. virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE; virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; virtual void DestroyTrayView() OVERRIDE; virtual void DestroyDefaultView() OVERRIDE; virtual void DestroyDetailedView() OVERRIDE; virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE; // Overridden from BrightnessObserver. virtual void OnBrightnessChanged(double percent, bool user_initiated) OVERRIDE; base::WeakPtrFactory weak_ptr_factory_; tray::BrightnessView* brightness_view_; // Was |brightness_view_| created for CreateDefaultView() rather than // CreateDetailedView()? Used to avoid resetting |brightness_view_| // inappropriately in DestroyDefaultView() or DestroyDetailedView(). bool is_default_view_; // Brightness level in the range [0.0, 100.0] that we've heard about most // recently. double current_percent_; // Has |current_percent_| been initialized? bool got_current_percent_; DISALLOW_COPY_AND_ASSIGN(TrayBrightness); }; } // namespace internal } // namespace ash #endif // ASH_SYSTEM_BRIGHTNESS_TRAY_BRIGHTNESS_H_