Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(607)

Unified Diff: chrome/browser/chromeos/status/volume_menu_button.cc

Issue 9169033: Support for showing/hiding status area volume controls in desktop devices (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: minor Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/chromeos/status/volume_menu_button.cc
===================================================================
--- chrome/browser/chromeos/status/volume_menu_button.cc (revision 119229)
+++ chrome/browser/chromeos/status/volume_menu_button.cc (working copy)
@@ -6,10 +6,11 @@
#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/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 +22,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 +31,26 @@
static const int kVolumeMenuWidth = 27;
static const int kVolumeIconWidth = 20;
+bool ShouldShowStatusAreaVolume() {
+ return CommandLine::ForCurrentProcess()->
+ HasSwitch(switches::kShowVolumeStatus);
+}
+
////////////////////////////////////////////////////////////////////////////////
// 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::GetInstanceIfInitialized();
+ 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::GetInstanceIfInitialized();
if (audio_handler)
audio_handler->SetVolumePercent(percent);
g_volume_percent = percent;
@@ -77,9 +81,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 +93,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 +110,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 +169,12 @@
return true;
}
+void VolumeControlView::OnVolumeChanged() {
+ SchedulePaint();
+}
+
} // namespace
-namespace chromeos {
-
////////////////////////////////////////////////////////////////////////////////
// VolumeMenuButton
@@ -172,9 +182,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(ShouldShowStatusAreaVolume());
}
VolumeMenuButton::~VolumeMenuButton() {
@@ -201,6 +209,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.

Powered by Google App Engine
This is Rietveld 408576698