OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/chromeos/status/volume_menu_button.h" | 5 #include "chrome/browser/chromeos/status/volume_menu_button.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 | 8 |
9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
10 #include "chrome/browser/chromeos/audio/audio_handler.h" | 10 #include "chrome/browser/chromeos/audio/audio_handler.h" |
11 #include "chrome/browser/chromeos/status/status_area_bubble.h" | 11 #include "chrome/browser/chromeos/status/status_area_bubble.h" |
| 12 #include "chrome/browser/chromeos/system/runtime_environment.h" |
12 #include "chrome/browser/chromeos/view_ids.h" | 13 #include "chrome/browser/chromeos/view_ids.h" |
13 #include "grit/generated_resources.h" | 14 #include "grit/generated_resources.h" |
14 #include "grit/theme_resources.h" | 15 #include "grit/theme_resources.h" |
15 #include "ui/base/l10n/l10n_util.h" | 16 #include "ui/base/l10n/l10n_util.h" |
16 #include "ui/base/resource/resource_bundle.h" | 17 #include "ui/base/resource/resource_bundle.h" |
17 #include "ui/gfx/canvas.h" | 18 #include "ui/gfx/canvas.h" |
18 #include "ui/gfx/canvas_skia.h" | 19 #include "ui/gfx/canvas_skia.h" |
19 #include "ui/gfx/image/image.h" | 20 #include "ui/gfx/image/image.h" |
20 #include "ui/views/controls/menu/menu_item_view.h" | 21 #include "ui/views/controls/menu/menu_item_view.h" |
21 #include "ui/views/controls/menu/menu_runner.h" | 22 #include "ui/views/controls/menu/menu_runner.h" |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
165 | 166 |
166 namespace chromeos { | 167 namespace chromeos { |
167 | 168 |
168 //////////////////////////////////////////////////////////////////////////////// | 169 //////////////////////////////////////////////////////////////////////////////// |
169 // VolumeMenuButton | 170 // VolumeMenuButton |
170 | 171 |
171 VolumeMenuButton::VolumeMenuButton(StatusAreaButton::Delegate* delegate) | 172 VolumeMenuButton::VolumeMenuButton(StatusAreaButton::Delegate* delegate) |
172 : StatusAreaButton(delegate, this) { | 173 : StatusAreaButton(delegate, this) { |
173 set_id(VIEW_ID_STATUS_BUTTON_VOLUME); | 174 set_id(VIEW_ID_STATUS_BUTTON_VOLUME); |
174 UpdateIcon(); | 175 UpdateIcon(); |
175 // TODO(achuith): Query SystemKeyEventListener to determine when we | 176 |
176 // can show statusbar volume controls. | 177 DCHECK(SystemKeyEventListener::GetInstance() || |
177 SetVisible(false); | 178 !system::runtime_environment::IsRunningOnChromeOS()); |
| 179 if (SystemKeyEventListener::GetInstance()) |
| 180 SystemKeyEventListener::GetInstance()->AddStatusAreaVolumeObserver(this); |
178 } | 181 } |
179 | 182 |
180 VolumeMenuButton::~VolumeMenuButton() { | 183 VolumeMenuButton::~VolumeMenuButton() { |
| 184 if (SystemKeyEventListener::GetInstance()) |
| 185 SystemKeyEventListener::GetInstance()->RemoveStatusAreaVolumeObserver(this); |
181 } | 186 } |
182 | 187 |
183 int VolumeMenuButton::icon_width() { | 188 int VolumeMenuButton::icon_width() { |
184 return kVolumeIconWidth; | 189 return kVolumeIconWidth; |
185 } | 190 } |
186 | 191 |
187 void VolumeMenuButton::UpdateIcon() { | 192 void VolumeMenuButton::UpdateIcon() { |
188 const int volume_percent = GetVolumePercent(); | 193 const int volume_percent = GetVolumePercent(); |
189 string16 tooltip_text = (volume_percent == 0) | 194 string16 tooltip_text = (volume_percent == 0) |
190 ? l10n_util::GetStringUTF16(IDS_STATUSBAR_VOLUME_MUTE) | 195 ? l10n_util::GetStringUTF16(IDS_STATUSBAR_VOLUME_MUTE) |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
226 source->GetWidget()->GetTopLevelWidget(), | 231 source->GetWidget()->GetTopLevelWidget(), |
227 this, | 232 this, |
228 bounds, | 233 bounds, |
229 views::MenuItemView::TOPRIGHT, | 234 views::MenuItemView::TOPRIGHT, |
230 views::MenuRunner::HAS_MNEMONICS); | 235 views::MenuRunner::HAS_MNEMONICS); |
231 | 236 |
232 if (result != views::MenuRunner::MENU_DELETED) | 237 if (result != views::MenuRunner::MENU_DELETED) |
233 delete menu_runner; | 238 delete menu_runner; |
234 } | 239 } |
235 | 240 |
| 241 void VolumeMenuButton::ShowStatusAreaVolume(bool show) { |
| 242 SetVisible(show); |
| 243 } |
| 244 |
236 } // namespace chromeos | 245 } // namespace chromeos |
OLD | NEW |