Home | History | Annotate | Download | only in tray
      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_TRAY_SYSTEM_TRAY_DELEGATE_H_
      6 #define ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_
      7 
      8 #include <string>
      9 #include <vector>
     10 
     11 #include "ash/ash_export.h"
     12 #include "ash/system/user/login_status.h"
     13 #include "base/files/file_path.h"
     14 #include "base/i18n/time_formatting.h"
     15 #include "base/memory/scoped_ptr.h"
     16 #include "base/strings/string16.h"
     17 #include "ui/gfx/image/image_skia.h"
     18 #include "ui/gfx/native_widget_types.h"
     19 
     20 namespace base {
     21 class TimeDelta;
     22 class TimeTicks;
     23 }
     24 
     25 namespace ash {
     26 
     27 struct ASH_EXPORT NetworkIconInfo {
     28   NetworkIconInfo();
     29   ~NetworkIconInfo();
     30 
     31   bool highlight() const { return connected || connecting; }
     32 
     33   bool connecting;
     34   bool connected;
     35   bool tray_icon_visible;
     36   gfx::ImageSkia image;
     37   base::string16 name;
     38   base::string16 description;
     39   std::string service_path;
     40   bool is_cellular;
     41 };
     42 
     43 struct ASH_EXPORT BluetoothDeviceInfo {
     44   BluetoothDeviceInfo();
     45   ~BluetoothDeviceInfo();
     46 
     47   std::string address;
     48   base::string16 display_name;
     49   bool connected;
     50   bool connecting;
     51   bool paired;
     52 };
     53 
     54 typedef std::vector<BluetoothDeviceInfo> BluetoothDeviceList;
     55 
     56 // Structure that packs progress information of each operation.
     57 struct ASH_EXPORT DriveOperationStatus {
     58   enum OperationType {
     59     OPERATION_UPLOAD,
     60     OPERATION_DOWNLOAD
     61   };
     62 
     63   enum OperationState {
     64     OPERATION_NOT_STARTED,
     65     OPERATION_IN_PROGRESS,
     66     OPERATION_COMPLETED,
     67     OPERATION_FAILED,
     68   };
     69 
     70   DriveOperationStatus();
     71   ~DriveOperationStatus();
     72 
     73   // Unique ID for the operation.
     74   int32 id;
     75 
     76   // File path.
     77   base::FilePath file_path;
     78   // Current operation completion progress [0.0 - 1.0].
     79   double progress;
     80   OperationType type;
     81   OperationState state;
     82 };
     83 
     84 typedef std::vector<DriveOperationStatus> DriveOperationStatusList;
     85 
     86 
     87 struct ASH_EXPORT IMEPropertyInfo {
     88   IMEPropertyInfo();
     89   ~IMEPropertyInfo();
     90 
     91   bool selected;
     92   std::string key;
     93   base::string16 name;
     94 };
     95 
     96 typedef std::vector<IMEPropertyInfo> IMEPropertyInfoList;
     97 
     98 struct ASH_EXPORT IMEInfo {
     99   IMEInfo();
    100   ~IMEInfo();
    101 
    102   bool selected;
    103   bool third_party;
    104   std::string id;
    105   base::string16 name;
    106   base::string16 medium_name;
    107   base::string16 short_name;
    108 };
    109 
    110 typedef std::vector<IMEInfo> IMEInfoList;
    111 
    112 class VolumeControlDelegate;
    113 
    114 class ASH_EXPORT SystemTrayDelegate {
    115  public:
    116   virtual ~SystemTrayDelegate() {}
    117 
    118   // Called after SystemTray has been instantiated.
    119   virtual void Initialize() = 0;
    120 
    121   // Called before SystemTray is destroyed.
    122   virtual void Shutdown() = 0;
    123 
    124   // Returns true if system tray should be visible on startup.
    125   virtual bool GetTrayVisibilityOnStartup() = 0;
    126 
    127   // Gets information about the active user.
    128   virtual user::LoginStatus GetUserLoginStatus() const = 0;
    129   virtual bool IsOobeCompleted() const = 0;
    130 
    131   // Shows UI for changing user's profile picture.
    132   virtual void ChangeProfilePicture() = 0;
    133 
    134   // Returns the domain that manages the device, if it is enterprise-enrolled.
    135   virtual const std::string GetEnterpriseDomain() const = 0;
    136 
    137   // Returns notification for enterprise enrolled devices.
    138   virtual const base::string16 GetEnterpriseMessage() const = 0;
    139 
    140   // Returns the display email of user that manages current
    141   // locally managed user.
    142   virtual const std::string GetLocallyManagedUserManager() const = 0;
    143 
    144   // Returns the name of user that manages current locally managed user.
    145   virtual const base::string16 GetLocallyManagedUserManagerName() const = 0;
    146 
    147   // Returns notification for locally managed users.
    148   virtual const base::string16 GetLocallyManagedUserMessage() const = 0;
    149 
    150   // Returns whether a system upgrade is available.
    151   virtual bool SystemShouldUpgrade() const = 0;
    152 
    153   // Returns the desired hour clock type.
    154   virtual base::HourClockType GetHourClockType() const = 0;
    155 
    156   // Shows settings.
    157   virtual void ShowSettings() = 0;
    158 
    159   // Returns true if settings menu item should appear.
    160   virtual bool ShouldShowSettings() = 0;
    161 
    162   // Shows the settings related to date, timezone etc.
    163   virtual void ShowDateSettings() = 0;
    164 
    165   // Shows the settings related to network. If |service_path| is not empty,
    166   // show the settings for that network.
    167   virtual void ShowNetworkSettings(const std::string& service_path) = 0;
    168 
    169   // Shows the settings related to bluetooth.
    170   virtual void ShowBluetoothSettings() = 0;
    171 
    172   // Shows settings related to multiple displays.
    173   virtual void ShowDisplaySettings() = 0;
    174 
    175   // Shows the page that lets you disable performance tracing.
    176   virtual void ShowChromeSlow() = 0;
    177 
    178   // Returns true if the notification for the display configuration change
    179   // should appear.
    180   virtual bool ShouldShowDisplayNotification() = 0;
    181 
    182   // Shows settings related to Google Drive.
    183   virtual void ShowDriveSettings() = 0;
    184 
    185   // Shows settings related to input methods.
    186   virtual void ShowIMESettings() = 0;
    187 
    188   // Shows help.
    189   virtual void ShowHelp() = 0;
    190 
    191   // Show accessilibity help.
    192   virtual void ShowAccessibilityHelp() = 0;
    193 
    194   // Show the settings related to accessilibity.
    195   virtual void ShowAccessibilitySettings() = 0;
    196 
    197   // Shows more information about public account mode.
    198   virtual void ShowPublicAccountInfo() = 0;
    199 
    200   // Shows information about enterprise enrolled devices.
    201   virtual void ShowEnterpriseInfo() = 0;
    202 
    203   // Shows information about locally managed users.
    204   virtual void ShowLocallyManagedUserInfo() = 0;
    205 
    206   // Shows login UI to add other users to this session.
    207   virtual void ShowUserLogin() = 0;
    208 
    209   // Shows the spring charger replacement dialog if necessary.
    210   virtual void ShowSpringChargerReplacementDialog() = 0;
    211 
    212   // True if user has confirmed using safe spring charger.
    213   virtual bool HasUserConfirmedSafeSpringCharger() = 0;
    214 
    215   // Attempts to shut down the system.
    216   virtual void ShutDown() = 0;
    217 
    218   // Attempts to sign out the user.
    219   virtual void SignOut() = 0;
    220 
    221   // Attempts to lock the screen.
    222   virtual void RequestLockScreen() = 0;
    223 
    224   // Attempts to restart the system for update.
    225   virtual void RequestRestartForUpdate() = 0;
    226 
    227   // Returns a list of available bluetooth devices.
    228   virtual void GetAvailableBluetoothDevices(BluetoothDeviceList* devices) = 0;
    229 
    230   // Requests bluetooth start discovering devices.
    231   virtual void BluetoothStartDiscovering() = 0;
    232 
    233   // Requests bluetooth stop discovering devices.
    234   virtual void BluetoothStopDiscovering() = 0;
    235 
    236   // Connect to a specific bluetooth device.
    237   virtual void ConnectToBluetoothDevice(const std::string& address) = 0;
    238 
    239   // Returns true if bluetooth adapter is discovering bluetooth devices.
    240   virtual bool IsBluetoothDiscovering() = 0;
    241 
    242   // Returns the currently selected IME.
    243   virtual void GetCurrentIME(IMEInfo* info) = 0;
    244 
    245   // Returns a list of availble IMEs.
    246   virtual void GetAvailableIMEList(IMEInfoList* list) = 0;
    247 
    248   // Returns a list of properties for the currently selected IME.
    249   virtual void GetCurrentIMEProperties(IMEPropertyInfoList* list) = 0;
    250 
    251   // Switches to the selected input method.
    252   virtual void SwitchIME(const std::string& ime_id) = 0;
    253 
    254   // Activates an IME property.
    255   virtual void ActivateIMEProperty(const std::string& key) = 0;
    256 
    257   // Cancels ongoing drive operation.
    258   virtual void CancelDriveOperation(int32 operation_id) = 0;
    259 
    260   // Returns information about the ongoing drive operations.
    261   virtual void GetDriveOperationStatusList(
    262       DriveOperationStatusList* list) = 0;
    263 
    264   // Shows UI to configure or activate the network specified by |network_id|,
    265   // which may include showing Payment or Portal UI when appropriate.
    266   // |parent_window| is used to parent any configuration UI. If NULL a default
    267   // window will be used.
    268   virtual void ShowNetworkConfigure(const std::string& network_id,
    269                                     gfx::NativeWindow parent_window) = 0;
    270 
    271   // Shows UI to enroll the network specified by |network_id| if appropriate
    272   // and returns true, otherwise returns false. |parent_window| is used
    273   // to parent any configuration UI. If NULL a default window will be used.
    274   virtual bool EnrollNetwork(const std::string& network_id,
    275                              gfx::NativeWindow parent_window) = 0;
    276 
    277   // Shows UI to manage bluetooth devices.
    278   virtual void ManageBluetoothDevices() = 0;
    279 
    280   // Toggles bluetooth.
    281   virtual void ToggleBluetooth() = 0;
    282 
    283   // Shows UI to unlock a mobile sim.
    284   virtual void ShowMobileSimDialog() = 0;
    285 
    286   // Shows UI to setup a mobile network.
    287   virtual void ShowMobileSetupDialog(const std::string& service_path) = 0;
    288 
    289   // Shows UI to connect to an unlisted network of type |type|. On Chrome OS
    290   // |type| corresponds to a Shill network type.
    291   virtual void ShowOtherNetworkDialog(const std::string& type) = 0;
    292 
    293   // Returns whether bluetooth capability is available.
    294   virtual bool GetBluetoothAvailable() = 0;
    295 
    296   // Returns whether bluetooth is enabled.
    297   virtual bool GetBluetoothEnabled() = 0;
    298 
    299   // Shows UI for changing proxy settings.
    300   virtual void ChangeProxySettings() = 0;
    301 
    302   // Returns VolumeControlDelegate.
    303   virtual VolumeControlDelegate* GetVolumeControlDelegate() const = 0;
    304 
    305   // Sets VolumeControlDelegate.
    306   virtual void SetVolumeControlDelegate(
    307       scoped_ptr<VolumeControlDelegate> delegate) = 0;
    308 
    309   // Retrieves the session start time. Returns |false| if the time is not set.
    310   virtual bool GetSessionStartTime(base::TimeTicks* session_start_time) = 0;
    311 
    312   // Retrieves the session length limit. Returns |false| if no limit is set.
    313   virtual bool GetSessionLengthLimit(base::TimeDelta* session_length_limit) = 0;
    314 
    315   // Get the system tray menu size in pixels (dependent on the language).
    316   virtual int GetSystemTrayMenuWidth() = 0;
    317 };
    318 
    319 }  // namespace ash
    320 
    321 #endif  // ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_
    322