Commit 2b32c50d authored by mukai@chromium.org's avatar mukai@chromium.org

Modify the volume visuals:

According to crbug.com/128644
- the mute icon should be in the tray if volume is 0%
- volume slider point has to be 0.0 when muted

BUG=128644
TEST=manually

Review URL: https://chromiumcodereview.appspot.com/10408036

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138282 0039d316-1c4b-4281-b951-d872f2087c98
parent f9fd26c7
...@@ -106,7 +106,8 @@ class VolumeView : public views::View, ...@@ -106,7 +106,8 @@ class VolumeView : public views::View,
ash::Shell::GetInstance()->tray_delegate(); ash::Shell::GetInstance()->tray_delegate();
slider_ = new views::Slider(this, views::Slider::HORIZONTAL); slider_ = new views::Slider(this, views::Slider::HORIZONTAL);
slider_->set_focus_border_color(kFocusBorderColor); slider_->set_focus_border_color(kFocusBorderColor);
slider_->SetValue(delegate->GetVolumeLevel()); slider_->SetValue(
delegate->IsAudioMuted() ? 0.0 : delegate->GetVolumeLevel());
slider_->SetAccessibleName( slider_->SetAccessibleName(
ui::ResourceBundle::GetSharedInstance().GetLocalizedString( ui::ResourceBundle::GetSharedInstance().GetLocalizedString(
IDS_ASH_STATUS_TRAY_VOLUME)); IDS_ASH_STATUS_TRAY_VOLUME));
...@@ -148,8 +149,11 @@ class VolumeView : public views::View, ...@@ -148,8 +149,11 @@ class VolumeView : public views::View,
float value, float value,
float old_value, float old_value,
views::SliderChangeReason reason) OVERRIDE { views::SliderChangeReason reason) OVERRIDE {
if (reason == views::VALUE_CHANGED_BY_USER) if (reason == views::VALUE_CHANGED_BY_USER) {
ash::Shell::GetInstance()->tray_delegate()->SetVolumeLevel(value); ash::SystemTrayDelegate* delegate =
ash::Shell::GetInstance()->tray_delegate();
delegate->SetVolumeLevel(value);
}
icon_->Update(); icon_->Update();
} }
...@@ -171,7 +175,9 @@ TrayVolume::~TrayVolume() { ...@@ -171,7 +175,9 @@ TrayVolume::~TrayVolume() {
} }
bool TrayVolume::GetInitialVisibility() { bool TrayVolume::GetInitialVisibility() {
return ash::Shell::GetInstance()->tray_delegate()->IsAudioMuted(); ash::SystemTrayDelegate* delegate =
ash::Shell::GetInstance()->tray_delegate();
return delegate->GetVolumeLevel() == 0.0 || delegate->IsAudioMuted();
} }
views::View* TrayVolume::CreateDefaultView(user::LoginStatus status) { views::View* TrayVolume::CreateDefaultView(user::LoginStatus status) {
...@@ -201,6 +207,8 @@ void TrayVolume::OnVolumeChanged(float percent) { ...@@ -201,6 +207,8 @@ void TrayVolume::OnVolumeChanged(float percent) {
tray_view()->SetVisible(GetInitialVisibility()); tray_view()->SetVisible(GetInitialVisibility());
if (volume_view_) { if (volume_view_) {
if (ash::Shell::GetInstance()->tray_delegate()->IsAudioMuted())
percent = 0.0;
volume_view_->SetVolumeLevel(percent); volume_view_->SetVolumeLevel(percent);
SetDetailedViewCloseDelay(kTrayPopupAutoCloseDelayInSeconds); SetDetailedViewCloseDelay(kTrayPopupAutoCloseDelayInSeconds);
return; return;
......
...@@ -96,6 +96,8 @@ double AudioHandler::GetVolumePercent() { ...@@ -96,6 +96,8 @@ double AudioHandler::GetVolumePercent() {
void AudioHandler::SetVolumePercent(double volume_percent) { void AudioHandler::SetVolumePercent(double volume_percent) {
volume_percent = min(max(volume_percent, 0.0), 100.0); volume_percent = min(max(volume_percent, 0.0), 100.0);
if (IsMuted() && volume_percent > 0.0)
SetMuted(false);
mixer_->SetVolumePercent(volume_percent); mixer_->SetVolumePercent(volume_percent);
prefs_->SetDouble(prefs::kAudioVolumePercent, volume_percent); prefs_->SetDouble(prefs::kAudioVolumePercent, volume_percent);
FOR_EACH_OBSERVER(VolumeObserver, volume_observers_, OnVolumeChanged()); FOR_EACH_OBSERVER(VolumeObserver, volume_observers_, OnVolumeChanged());
......
...@@ -69,9 +69,6 @@ bool VolumeController::HandleVolumeUp(const ui::Accelerator& accelerator) { ...@@ -69,9 +69,6 @@ bool VolumeController::HandleVolumeUp(const ui::Accelerator& accelerator) {
void VolumeController::SetVolumePercent(double percent) { void VolumeController::SetVolumePercent(double percent) {
chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance(); chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance();
if (audio_handler->IsMuted()) {
audio_handler->SetMuted(false);
}
audio_handler->SetVolumePercent(percent); audio_handler->SetVolumePercent(percent);
extensions::DispatchVolumeChangedEvent(audio_handler->GetVolumePercent(), extensions::DispatchVolumeChangedEvent(audio_handler->GetVolumePercent(),
audio_handler->IsMuted()); audio_handler->IsMuted());
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment