Index: chrome/browser/chromeos/status/volume_menu_button.cc |
=================================================================== |
--- chrome/browser/chromeos/status/volume_menu_button.cc (revision 119043) |
+++ chrome/browser/chromeos/status/volume_menu_button.cc (working copy) |
@@ -6,10 +6,12 @@ |
#include <algorithm> |
+#include "base/command_line.h" |
#include "base/string_number_conversions.h" |
-#include "chrome/browser/chromeos/audio/audio_handler.h" |
#include "chrome/browser/chromeos/status/status_area_bubble.h" |
+#include "chrome/browser/chromeos/system/runtime_environment.h" |
#include "chrome/browser/chromeos/view_ids.h" |
+#include "chrome/common/chrome_switches.h" |
#include "grit/generated_resources.h" |
#include "grit/theme_resources.h" |
#include "ui/base/l10n/l10n_util.h" |
@@ -21,6 +23,8 @@ |
#include "ui/views/controls/menu/menu_runner.h" |
#include "ui/views/controls/menu/submenu_view.h" |
+namespace chromeos { |
+ |
namespace { |
static const int kMenuItemId = 100; // arbitrary menu id. |
@@ -28,25 +32,26 @@ |
static const int kVolumeMenuWidth = 27; |
static const int kVolumeIconWidth = 20; |
+bool ShowStatusAreaVolume() { |
Daniel Erat
2012/01/26 17:55:21
rename to "ShouldShowStatusAreaVolume"; otherwise
achuithb
2012/01/27 01:48:05
Done.
|
+ return CommandLine::ForCurrentProcess()-> |
+ HasSwitch(switches::kShowStatusAreaVolume); |
+} |
+ |
//////////////////////////////////////////////////////////////////////////////// |
// AudioHandler helpers |
// Used when not running on a ChromeOS device. |
static int g_volume_percent = 0; |
-chromeos::AudioHandler* GetAudioHandler() { |
- chromeos::AudioHandler* audio_handler = chromeos::AudioHandler::GetInstance(); |
- return audio_handler && audio_handler->IsInitialized() ? |
- audio_handler : NULL; |
-} |
- |
int GetVolumePercent() { |
- chromeos::AudioHandler* audio_handler = GetAudioHandler(); |
- return audio_handler ? audio_handler->GetVolumePercent() : g_volume_percent; |
+ AudioHandler* audio_handler = AudioHandler::GetInitialized(); |
+ if (audio_handler) |
+ return audio_handler->IsMuted() ? 0 : audio_handler->GetVolumePercent(); |
+ return g_volume_percent; |
} |
void SetVolumePercent(int percent) { |
- chromeos::AudioHandler* audio_handler = GetAudioHandler(); |
+ AudioHandler* audio_handler = AudioHandler::GetInitialized(); |
if (audio_handler) |
audio_handler->SetVolumePercent(percent); |
g_volume_percent = percent; |
@@ -77,9 +82,10 @@ |
//////////////////////////////////////////////////////////////////////////////// |
// VolumeControlView |
-class VolumeControlView : public views::View { |
+class VolumeControlView : public views::View, |
+ public AudioHandler::VolumeObserver { |
public: |
- explicit VolumeControlView(chromeos::VolumeMenuButton* volume_menu_button); |
+ explicit VolumeControlView(VolumeMenuButton* volume_menu_button); |
private: |
// views::View overrides: |
@@ -88,8 +94,11 @@ |
virtual bool OnMousePressed(const views::MouseEvent& event) OVERRIDE; |
virtual bool OnMouseDragged(const views::MouseEvent& event) OVERRIDE; |
- chromeos::VolumeMenuButton* volume_menu_button_; |
+ // AudioHandler::VolumeObserver overrides: |
+ virtual void OnVolumeChanged() OVERRIDE; |
+ VolumeMenuButton* volume_menu_button_; |
+ |
const SkBitmap* slider_empty_; |
const SkBitmap* slider_full_; |
const SkBitmap* thumb_; |
@@ -102,7 +111,7 @@ |
}; |
VolumeControlView::VolumeControlView( |
- chromeos::VolumeMenuButton* volume_menu_button) |
+ VolumeMenuButton* volume_menu_button) |
: volume_menu_button_(volume_menu_button), |
slider_empty_(GetImageNamed(IDR_STATUSBAR_VOLUME_SLIDER_EMPTY)), |
slider_full_(GetImageNamed(IDR_STATUSBAR_VOLUME_SLIDER_FULL)), |
@@ -161,10 +170,12 @@ |
return true; |
} |
+void VolumeControlView::OnVolumeChanged() { |
+ SchedulePaint(); |
+} |
+ |
} // namespace |
-namespace chromeos { |
- |
//////////////////////////////////////////////////////////////////////////////// |
// VolumeMenuButton |
@@ -172,9 +183,7 @@ |
: StatusAreaButton(delegate, this) { |
set_id(VIEW_ID_STATUS_BUTTON_VOLUME); |
UpdateIcon(); |
- // TODO(achuith): Query SystemKeyEventListener to determine when we |
- // can show statusbar volume controls. |
- SetVisible(false); |
+ SetVisible(ShowStatusAreaVolume()); |
} |
VolumeMenuButton::~VolumeMenuButton() { |
@@ -201,6 +210,10 @@ |
UpdateIcon(); |
} |
+void VolumeMenuButton::OnVolumeChanged() { |
+ UpdateIcon(); |
+} |
+ |
void VolumeMenuButton::RunMenu(views::View* source, const gfx::Point& pt) { |
// TODO(achuith): Minimum width of MenuItemView is 27 pix which is too wide |
// for our purposes here. |