blob: 6e093aa9669a6786f210a7914b655369b6f62f71 [file] [log] [blame]
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_
#define ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_
#include <string>
#include <vector>
#include "ash/ash_export.h"
#include "ash/system/user/login_status.h"
#include "base/callback_forward.h"
#include "base/files/file_path.h"
#include "base/i18n/time_formatting.h"
#include "base/memory/scoped_ptr.h"
#include "base/strings/string16.h"
#include "ui/gfx/image/image_skia.h"
namespace base {
class TimeDelta;
class TimeTicks;
}
namespace ash {
class CustodianInfoTrayObserver;
struct ASH_EXPORT NetworkIconInfo {
NetworkIconInfo();
~NetworkIconInfo();
bool highlight() const { return connected || connecting; }
bool connecting;
bool connected;
bool tray_icon_visible;
gfx::ImageSkia image;
base::string16 name;
base::string16 description;
std::string service_path;
bool is_cellular;
};
struct ASH_EXPORT BluetoothDeviceInfo {
BluetoothDeviceInfo();
~BluetoothDeviceInfo();
std::string address;
base::string16 display_name;
bool connected;
bool connecting;
bool paired;
};
typedef std::vector<BluetoothDeviceInfo> BluetoothDeviceList;
struct ASH_EXPORT IMEPropertyInfo {
IMEPropertyInfo();
~IMEPropertyInfo();
bool selected;
std::string key;
base::string16 name;
};
typedef std::vector<IMEPropertyInfo> IMEPropertyInfoList;
struct ASH_EXPORT IMEInfo {
IMEInfo();
~IMEInfo();
bool selected;
bool third_party;
std::string id;
base::string16 name;
base::string16 medium_name;
base::string16 short_name;
};
struct ASH_EXPORT UpdateInfo {
enum UpdateSeverity {
UPDATE_NORMAL,
UPDATE_LOW_GREEN,
UPDATE_HIGH_ORANGE,
UPDATE_SEVERE_RED,
};
UpdateInfo();
~UpdateInfo();
UpdateSeverity severity;
bool update_required;
bool factory_reset_required;
};
typedef std::vector<IMEInfo> IMEInfoList;
class VolumeControlDelegate;
namespace tray {
class UserAccountsDelegate;
} // namespace tray
class ASH_EXPORT SystemTrayDelegate {
public:
virtual ~SystemTrayDelegate() {}
// Called after SystemTray has been instantiated.
virtual void Initialize() = 0;
// Called before SystemTray is destroyed.
virtual void Shutdown() = 0;
// Returns true if system tray should be visible on startup.
virtual bool GetTrayVisibilityOnStartup() = 0;
// Gets information about the active user.
virtual user::LoginStatus GetUserLoginStatus() const = 0;
// Shows UI for changing user's profile picture.
virtual void ChangeProfilePicture() = 0;
// Returns the domain that manages the device, if it is enterprise-enrolled.
virtual const std::string GetEnterpriseDomain() const = 0;
// Returns notification for enterprise enrolled devices.
virtual const base::string16 GetEnterpriseMessage() const = 0;
// Returns the display email of the user that manages the current supervised
// user.
virtual const std::string GetSupervisedUserManager() const = 0;
// Returns the name of the user that manages the current supervised user.
virtual const base::string16 GetSupervisedUserManagerName() const = 0;
// Returns the notification for supervised users.
virtual const base::string16 GetSupervisedUserMessage() const = 0;
// Returns true if the current user is supervised.
virtual bool IsUserSupervised() const = 0;
// Fills |info| structure with current update info.
virtual void GetSystemUpdateInfo(UpdateInfo* info) const = 0;
// Returns the desired hour clock type.
virtual base::HourClockType GetHourClockType() const = 0;
// Shows settings.
virtual void ShowSettings() = 0;
// Returns true if settings menu item should appear.
virtual bool ShouldShowSettings() = 0;
// Shows the settings related to date, timezone etc.
virtual void ShowDateSettings() = 0;
// Shows the dialog to set system time, date, and timezone.
virtual void ShowSetTimeDialog() = 0;
// Shows the settings related to network. If |service_path| is not empty,
// show the settings for that network.
virtual void ShowNetworkSettings(const std::string& service_path) = 0;
// Shows the settings related to bluetooth.
virtual void ShowBluetoothSettings() = 0;
// Shows settings related to multiple displays.
virtual void ShowDisplaySettings() = 0;
// Shows the page that lets you disable performance tracing.
virtual void ShowChromeSlow() = 0;
// Returns true if the notification for the display configuration change
// should appear.
virtual bool ShouldShowDisplayNotification() = 0;
// Shows settings related to input methods.
virtual void ShowIMESettings() = 0;
// Shows help.
virtual void ShowHelp() = 0;
// Show accessilibity help.
virtual void ShowAccessibilityHelp() = 0;
// Show the settings related to accessilibity.
virtual void ShowAccessibilitySettings() = 0;
// Shows more information about public account mode.
virtual void ShowPublicAccountInfo() = 0;
// Shows information about enterprise enrolled devices.
virtual void ShowEnterpriseInfo() = 0;
// Shows information about supervised users.
virtual void ShowSupervisedUserInfo() = 0;
// Shows login UI to add other users to this session.
virtual void ShowUserLogin() = 0;
// Shows the spring charger replacement dialog if necessary.
// Returns true if the dialog is shown by the call.
virtual bool ShowSpringChargerReplacementDialog() = 0;
// True if the spring charger replacement dialog is visible.
virtual bool IsSpringChargerReplacementDialogVisible() = 0;
// True if user has confirmed using safe spring charger.
virtual bool HasUserConfirmedSafeSpringCharger() = 0;
// Attempts to shut down the system.
virtual void ShutDown() = 0;
// Attempts to sign out the user.
virtual void SignOut() = 0;
// Attempts to lock the screen.
virtual void RequestLockScreen() = 0;
// Attempts to restart the system for update.
virtual void RequestRestartForUpdate() = 0;
// Returns a list of available bluetooth devices.
virtual void GetAvailableBluetoothDevices(BluetoothDeviceList* devices) = 0;
// Requests bluetooth start discovering devices.
virtual void BluetoothStartDiscovering() = 0;
// Requests bluetooth stop discovering devices.
virtual void BluetoothStopDiscovering() = 0;
// Connect to a specific bluetooth device.
virtual void ConnectToBluetoothDevice(const std::string& address) = 0;
// Returns true if bluetooth adapter is discovering bluetooth devices.
virtual bool IsBluetoothDiscovering() = 0;
// Returns the currently selected IME.
virtual void GetCurrentIME(IMEInfo* info) = 0;
// Returns a list of availble IMEs.
virtual void GetAvailableIMEList(IMEInfoList* list) = 0;
// Returns a list of properties for the currently selected IME.
virtual void GetCurrentIMEProperties(IMEPropertyInfoList* list) = 0;
// Switches to the selected input method.
virtual void SwitchIME(const std::string& ime_id) = 0;
// Activates an IME property.
virtual void ActivateIMEProperty(const std::string& key) = 0;
// Shows UI to manage bluetooth devices.
virtual void ManageBluetoothDevices() = 0;
// Toggles bluetooth.
virtual void ToggleBluetooth() = 0;
// Shows UI to connect to an unlisted network of type |type|. On Chrome OS
// |type| corresponds to a Shill network type.
virtual void ShowOtherNetworkDialog(const std::string& type) = 0;
// Returns whether bluetooth capability is available.
virtual bool GetBluetoothAvailable() = 0;
// Returns whether bluetooth is enabled.
virtual bool GetBluetoothEnabled() = 0;
// Returns whether the delegate has initiated a bluetooth discovery session.
virtual bool GetBluetoothDiscovering() = 0;
// Shows UI for changing proxy settings.
virtual void ChangeProxySettings() = 0;
// Returns VolumeControlDelegate.
virtual VolumeControlDelegate* GetVolumeControlDelegate() const = 0;
// Sets VolumeControlDelegate.
virtual void SetVolumeControlDelegate(
scoped_ptr<VolumeControlDelegate> delegate) = 0;
// Retrieves the session start time. Returns |false| if the time is not set.
virtual bool GetSessionStartTime(base::TimeTicks* session_start_time) = 0;
// Retrieves the session length limit. Returns |false| if no limit is set.
virtual bool GetSessionLengthLimit(base::TimeDelta* session_length_limit) = 0;
// Get the system tray menu size in pixels (dependent on the language).
virtual int GetSystemTrayMenuWidth() = 0;
// The active user has been changed. This will be called when the UI is ready
// to be switched to the new user.
// Note: This will happen after SessionStateObserver::ActiveUserChanged fires.
virtual void ActiveUserWasChanged() = 0;
// Returns true when the Search key is configured to be treated as Caps Lock.
virtual bool IsSearchKeyMappedToCapsLock() = 0;
// Returns accounts delegate for given user.
virtual tray::UserAccountsDelegate* GetUserAccountsDelegate(
const std::string& user_id) = 0;
// Adding observers that are notified when supervised info is being changed.
virtual void AddCustodianInfoTrayObserver(
CustodianInfoTrayObserver* observer) = 0;
virtual void RemoveCustodianInfoTrayObserver(
CustodianInfoTrayObserver* observer) = 0;
};
} // namespace ash
#endif // ASH_SYSTEM_TRAY_SYSTEM_TRAY_DELEGATE_H_