Home | History | Annotate | Download | only in audio
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef ASH_SYSTEM_CHROMEOS_AUDIO_TRAY_AUDIO_H_
      6 #define ASH_SYSTEM_CHROMEOS_AUDIO_TRAY_AUDIO_H_
      7 
      8 #include "ash/system/tray/tray_image_item.h"
      9 #include "chromeos/audio/cras_audio_handler.h"
     10 
     11 namespace ash {
     12 namespace internal {
     13 
     14 namespace tray {
     15 class VolumeView;
     16 class AudioDetailedView;
     17 }
     18 
     19 class TrayAudio : public TrayImageItem,
     20                   public chromeos::CrasAudioHandler::AudioObserver {
     21  public:
     22   explicit TrayAudio(SystemTray* system_tray);
     23   virtual ~TrayAudio();
     24 
     25  private:
     26   // Overridden from TrayImageItem.
     27   virtual bool GetInitialVisibility() OVERRIDE;
     28 
     29   // Overridden from SystemTrayItem.
     30   virtual views::View* CreateDefaultView(user::LoginStatus status) OVERRIDE;
     31   virtual views::View* CreateDetailedView(user::LoginStatus status) OVERRIDE;
     32   virtual void DestroyDefaultView() OVERRIDE;
     33   virtual void DestroyDetailedView() OVERRIDE;
     34   virtual bool ShouldHideArrow() const OVERRIDE;
     35   virtual bool ShouldShowLauncher() const OVERRIDE;
     36 
     37   // Overridden from chromeos::CrasAudioHandler::AudioObserver.
     38   virtual void OnOutputVolumeChanged() OVERRIDE;
     39   virtual void OnOutputMuteChanged() OVERRIDE;
     40   virtual void OnInputGainChanged() OVERRIDE;
     41   virtual void OnInputMuteChanged() OVERRIDE;
     42   virtual void OnAudioNodesChanged() OVERRIDE;
     43   virtual void OnActiveOutputNodeChanged() OVERRIDE;
     44   virtual void OnActiveInputNodeChanged() OVERRIDE;
     45 
     46   void Update();
     47 
     48   tray::VolumeView* volume_view_;
     49   tray::AudioDetailedView* audio_detail_;
     50 
     51   // True if VolumeView should be created for accelerator pop up;
     52   // Otherwise, it should be created for detailed view in ash tray bubble.
     53   bool pop_up_volume_view_;
     54 
     55   DISALLOW_COPY_AND_ASSIGN(TrayAudio);
     56 };
     57 
     58 }  // namespace internal
     59 }  // namespace ash
     60 
     61 #endif  // ASH_SYSTEM_CHROMEOS_AUDIO_TRAY_AUDIO_H_
     62