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.
5 #ifndef ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_
6 #define ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_
11 #include "ash/ash_export.h"
12 #include "ash/system/audio/audio_observer.h"
13 #include "ash/system/bluetooth/bluetooth_observer.h"
14 #include "ash/system/brightness/brightness_observer.h"
15 #include "ash/system/chromeos/network/network_observer.h"
16 #include "ash/system/chromeos/network/sms_observer.h"
17 #include "ash/system/date/clock_observer.h"
18 #include "ash/system/drive/drive_observer.h"
19 #include "ash/system/ime/ime_observer.h"
20 #include "ash/system/locale/locale_observer.h"
21 #include "ash/system/logout_button/logout_button_observer.h"
22 #include "ash/system/power/power_status_observer.h"
23 #include "ash/system/session_length_limit/session_length_limit_observer.h"
24 #include "ash/system/tray_accessibility.h"
25 #include "ash/system/tray_caps_lock.h"
26 #include "ash/system/user/update_observer.h"
27 #include "ash/system/user/user_observer.h"
28 #include "base/observer_list.h"
29 #include "base/time.h"
31 #if defined(OS_CHROMEOS)
32 #include "ash/system/chromeos/network/network_observer.h"
33 #include "ash/system/chromeos/network/sms_observer.h"
38 class ASH_EXPORT SystemTrayNotifier
{
41 ~SystemTrayNotifier();
43 void AddAccessibilityObserver(AccessibilityObserver
* observer
);
44 void RemoveAccessibilityObserver(AccessibilityObserver
* observer
);
46 void AddAudioObserver(AudioObserver
* observer
);
47 void RemoveAudioObserver(AudioObserver
* observer
);
49 void AddBluetoothObserver(BluetoothObserver
* observer
);
50 void RemoveBluetoothObserver(BluetoothObserver
* observer
);
52 void AddBrightnessObserver(BrightnessObserver
* observer
);
53 void RemoveBrightnessObserver(BrightnessObserver
* observer
);
55 void AddCapsLockObserver(CapsLockObserver
* observer
);
56 void RemoveCapsLockObserver(CapsLockObserver
* observer
);
58 void AddClockObserver(ClockObserver
* observer
);
59 void RemoveClockObserver(ClockObserver
* observer
);
61 void AddDriveObserver(DriveObserver
* observer
);
62 void RemoveDriveObserver(DriveObserver
* observer
);
64 void AddIMEObserver(IMEObserver
* observer
);
65 void RemoveIMEObserver(IMEObserver
* observer
);
67 void AddLocaleObserver(LocaleObserver
* observer
);
68 void RemoveLocaleObserver(LocaleObserver
* observer
);
70 void AddLogoutButtonObserver(LogoutButtonObserver
* observer
);
71 void RemoveLogoutButtonObserver(LogoutButtonObserver
* observer
);
73 void AddPowerStatusObserver(PowerStatusObserver
* observer
);
74 void RemovePowerStatusObserver(PowerStatusObserver
* observer
);
76 void AddSessionLengthLimitObserver(SessionLengthLimitObserver
* observer
);
77 void RemoveSessionLengthLimitObserver(SessionLengthLimitObserver
* observer
);
79 void AddUpdateObserver(UpdateObserver
* observer
);
80 void RemoveUpdateObserver(UpdateObserver
* observer
);
82 void AddUserObserver(UserObserver
* observer
);
83 void RemoveUserObserver(UserObserver
* observer
);
85 #if defined(OS_CHROMEOS)
86 void AddNetworkObserver(NetworkObserver
* observer
);
87 void RemoveNetworkObserver(NetworkObserver
* observer
);
89 void AddVpnObserver(NetworkObserver
* observer
);
90 void RemoveVpnObserver(NetworkObserver
* observer
);
92 void AddSmsObserver(SmsObserver
* observer
);
93 void RemoveSmsObserver(SmsObserver
* observer
);
96 void NotifyAccessibilityModeChanged(
97 AccessibilityNotificationVisibility notify
);
98 void NotifyVolumeChanged(float level
);
99 void NotifyMuteToggled();
100 void NotifyRefreshBluetooth();
101 void NotifyBluetoothDiscoveringChanged();
102 void NotifyBrightnessChanged(double level
, bool user_initialted
);
103 void NotifyCapsLockChanged(bool enabled
, bool search_mapped_to_caps_lock
);
104 void NotifyRefreshClock();
105 void NotifyDateFormatChanged();
106 void NotifyRefreshDrive(DriveOperationStatusList
& list
);
107 void NotifyRefreshIME(bool show_message
);
108 void NotifyShowLoginButtonChanged(bool show_login_button
);
109 void NotifyLocaleChanged(LocaleObserver::Delegate
* delegate
,
110 const std::string
& cur_locale
,
111 const std::string
& from_locale
,
112 const std::string
& to_locale
);
113 void NotifyPowerStatusChanged(const PowerSupplyStatus
& power_status
);
114 void NotifySessionStartTimeChanged(const base::Time
& session_start_time
);
115 void NotifySessionLengthLimitChanged(const base::TimeDelta
& limit
);
116 void NotifyUpdateRecommended(UpdateObserver::UpdateSeverity severity
);
117 void NotifyUserUpdate();
118 #if defined(OS_CHROMEOS)
119 void NotifyRefreshNetwork(const NetworkIconInfo
&info
);
120 void NotifySetNetworkMessage(NetworkTrayDelegate
* delegate
,
121 NetworkObserver::MessageType message_type
,
122 NetworkObserver::NetworkType network_type
,
123 const string16
& title
,
124 const string16
& message
,
125 const std::vector
<string16
>& links
);
126 void NotifyClearNetworkMessage(NetworkObserver::MessageType message_type
);
127 void NotifyVpnRefreshNetwork(const NetworkIconInfo
&info
);
128 void NotifyWillToggleWifi();
129 void NotifyAddSmsMessage(const base::DictionaryValue
& message
);
133 ObserverList
<AccessibilityObserver
> accessibility_observers_
;
134 ObserverList
<AudioObserver
> audio_observers_
;
135 ObserverList
<BluetoothObserver
> bluetooth_observers_
;
136 ObserverList
<BrightnessObserver
> brightness_observers_
;
137 ObserverList
<CapsLockObserver
> caps_lock_observers_
;
138 ObserverList
<ClockObserver
> clock_observers_
;
139 ObserverList
<DriveObserver
> drive_observers_
;
140 ObserverList
<IMEObserver
> ime_observers_
;
141 ObserverList
<LocaleObserver
> locale_observers_
;
142 ObserverList
<LogoutButtonObserver
> logout_button_observers_
;
143 ObserverList
<PowerStatusObserver
> power_status_observers_
;
144 ObserverList
<SessionLengthLimitObserver
> session_length_limit_observers_
;
145 ObserverList
<UpdateObserver
> update_observers_
;
146 ObserverList
<UserObserver
> user_observers_
;
147 #if defined(OS_CHROMEOS)
148 ObserverList
<NetworkObserver
> network_observers_
;
149 ObserverList
<NetworkObserver
> vpn_observers_
;
150 ObserverList
<SmsObserver
> sms_observers_
;
153 DISALLOW_COPY_AND_ASSIGN(SystemTrayNotifier
);
158 #endif // ASH_SYSTEM_TRAY_SYSTEM_TRAY_NOTIFIER_H_