14e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 54e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#ifndef ASH_SYSTEM_CHROMEOS_BRIGHTNESS_TRAY_BRIGHTNESS_H_ 64e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#define ASH_SYSTEM_CHROMEOS_BRIGHTNESS_TRAY_BRIGHTNESS_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/system/tray/system_tray_item.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/compiler_specific.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/weak_ptr.h" 114e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "chromeos/dbus/power_manager_client.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace ash { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace tray { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class BrightnessView; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class ASH_EXPORT TrayBrightness 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) : public SystemTrayItem, 2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public chromeos::PowerManagerClient::Observer { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) explicit TrayBrightness(SystemTray* system_tray); 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~TrayBrightness(); 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 2623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) friend class TrayBrightnessTest; 2723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Sends a request to get the current screen brightness so |current_percent_| 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // can be initialized. 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void GetInitialBrightness(); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Updates |current_percent_| with the initial brightness requested by 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // GetInitialBrightness(), if we haven't seen the brightness already in the 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // meantime. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void HandleInitialBrightness(double percent); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Overridden from SystemTrayItem. 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateTrayView(user::LoginStatus status) OVERRIDE; 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyTrayView() OVERRIDE; 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyDefaultView() OVERRIDE; 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void DestroyDetailedView() OVERRIDE; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void UpdateAfterLoginStatusChange(user::LoginStatus status) OVERRIDE; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool ShouldHideArrow() const OVERRIDE; 465d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) virtual bool ShouldShowShelf() const OVERRIDE; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 484e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) // Overriden from PowerManagerClient::Observer. 494e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) virtual void BrightnessChanged(int level, bool user_initiated) OVERRIDE; 504e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 514e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) void HandleBrightnessChanged(double percent, bool user_initiated); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) tray::BrightnessView* brightness_view_; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Brightness level in the range [0.0, 100.0] that we've heard about most 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // recently. 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) double current_percent_; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Has |current_percent_| been initialized? 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool got_current_percent_; 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci base::WeakPtrFactory<TrayBrightness> weak_ptr_factory_; 631320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(TrayBrightness); 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace ash 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 694e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#endif // ASH_SYSTEM_CHROMEOS_BRIGHTNESS_TRAY_BRIGHTNESS_H_ 70