// Copyright 2014 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_AUDIO_VOLUME_VIEW_H_ #define ASH_SYSTEM_AUDIO_VOLUME_VIEW_H_ #include "ash/system/tray/actionable_view.h" #include "ui/gfx/font.h" #include "ui/views/controls/button/button.h" #include "ui/views/controls/slider.h" namespace views { class View; class ImageView; } namespace ash { class HoverHighlightView; class SystemTrayItem; namespace system { class TrayAudioDelegate; } namespace tray { class BarSeparator; class VolumeButton; class VolumeSlider; class VolumeView : public ActionableView, public views::ButtonListener, public views::SliderListener { public: VolumeView(SystemTrayItem* owner, system::TrayAudioDelegate* audio_delegate, bool is_default_view); virtual ~VolumeView(); void Update(); // Sets volume level on slider_, |percent| is ranged from [0.00] to [1.00]. void SetVolumeLevel(float percent); private: // Updates bar_, device_type_ icon, and more_ buttons. void UpdateDeviceTypeAndMore(); void HandleVolumeUp(float percent); void HandleVolumeDown(float percent); // Overridden from views::View. virtual void Layout() OVERRIDE; // Overridden from views::ButtonListener. virtual void ButtonPressed(views::Button* sender, const ui::Event& event) OVERRIDE; // Overridden from views::SliderListener. virtual void SliderValueChanged(views::Slider* sender, float value, float old_value, views::SliderChangeReason reason) OVERRIDE; // Overriden from ActionableView. virtual bool PerformAction(const ui::Event& event) OVERRIDE; SystemTrayItem* owner_; system::TrayAudioDelegate* audio_delegate_; VolumeButton* icon_; VolumeSlider* slider_; BarSeparator* bar_; views::ImageView* device_type_; views::ImageView* more_; bool is_default_view_; DISALLOW_COPY_AND_ASSIGN(VolumeView); }; } // namespace tray } // namespace ash #endif // ASH_SYSTEM_AUDIO_VOLUME_VIEW_H_