blob: 167ef45fe8e9a47ab1cd7d64f21acc130f3f898e [file] [log] [blame]
// 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_