1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef ASH_SYSTEM_AUDIO_TRAY_AUDIO_H_
6 #define ASH_SYSTEM_AUDIO_TRAY_AUDIO_H_
8 #include "ash/system/audio/audio_observer.h"
9 #include "ash/system/tray/tray_image_item.h"
10 #include "base/memory/scoped_ptr.h"
15 class TrayAudioDelegate
;
22 class TrayAudio
: public TrayImageItem
,
23 public AudioObserver
{
25 TrayAudio(SystemTray
* system_tray
,
26 scoped_ptr
<system::TrayAudioDelegate
> audio_delegate
);
29 static bool ShowAudioDeviceMenu();
32 virtual void Update();
34 scoped_ptr
<system::TrayAudioDelegate
> audio_delegate_
;
35 tray::VolumeView
* volume_view_
;
37 // True if VolumeView should be created for accelerator pop up;
38 // Otherwise, it should be created for detailed view in ash tray bubble.
39 bool pop_up_volume_view_
;
42 // Overridden from TrayImageItem.
43 virtual bool GetInitialVisibility() OVERRIDE
;
45 // Overridden from SystemTrayItem.
46 virtual views::View
* CreateDefaultView(user::LoginStatus status
) OVERRIDE
;
47 virtual views::View
* CreateDetailedView(user::LoginStatus status
) OVERRIDE
;
48 virtual void DestroyDefaultView() OVERRIDE
;
49 virtual void DestroyDetailedView() OVERRIDE
;
50 virtual bool ShouldHideArrow() const OVERRIDE
;
51 virtual bool ShouldShowShelf() const OVERRIDE
;
53 // Overridden from AudioObserver.
54 virtual void OnOutputVolumeChanged() OVERRIDE
;
55 virtual void OnOutputMuteChanged() OVERRIDE
;
56 virtual void OnAudioNodesChanged() OVERRIDE
;
57 virtual void OnActiveOutputNodeChanged() OVERRIDE
;
58 virtual void OnActiveInputNodeChanged() OVERRIDE
;
60 DISALLOW_COPY_AND_ASSIGN(TrayAudio
);
65 #endif // ASH_SYSTEM_AUDIO_TRAY_AUDIO_H_