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.
4
5#ifndef ASH_SYSTEM_CHROMEOS_AUDIO_AUDIO_DETAILED_VIEW_H_
6#define ASH_SYSTEM_CHROMEOS_AUDIO_AUDIO_DETAILED_VIEW_H_
7
8#include "ash/system/tray/tray_details_view.h"
9#include "ash/system/tray/view_click_listener.h"
10#include "ash/system/user/login_status.h"
11#include "chromeos/audio/audio_device.h"
12
13#include "ui/gfx/font.h"
14
15namespace views {
16class View;
17}
18
19namespace ash {
20class HoverHighlightView;
21
22namespace tray {
23
24class AudioDetailedView : public TrayDetailsView,
25                          public ViewClickListener {
26 public:
27  AudioDetailedView(SystemTrayItem* owner, user::LoginStatus login);
28
29  virtual ~AudioDetailedView();
30
31  void Update();
32
33 private:
34  void AddScrollListInfoItem(const base::string16& text);
35
36  HoverHighlightView* AddScrollListItem(const base::string16& text,
37                                        gfx::Font::FontStyle style,
38                                        bool checked);
39
40  void CreateHeaderEntry();
41  void CreateItems();
42
43  void UpdateScrollableList();
44  void UpdateAudioDevices();
45
46  // Overridden from ViewClickListener.
47  virtual void OnViewClicked(views::View* sender) OVERRIDE;
48
49  user::LoginStatus login_;
50
51  typedef std::map<views::View*, chromeos::AudioDevice> AudioDeviceMap;
52
53  chromeos::AudioDeviceList output_devices_;
54  chromeos::AudioDeviceList input_devices_;
55  AudioDeviceMap device_map_;
56
57  DISALLOW_COPY_AND_ASSIGN(AudioDetailedView);
58};
59
60}  // namespace tray
61}  // namespace ash
62
63#endif  // ASH_SYSTEM_CHROMEOS_AUDIO_AUDIO_DETAILED_VIEW_H_
64