diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-15 23:07:02 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-03-15 23:07:02 +0000 |
commit | 939fab9259ba1d9e4b5f735ef41ce43229b4e456 (patch) | |
tree | f58b33bde937ac53b03db3f4d9fc49d8a599b0d3 /ash | |
parent | 21ee2082dffb4e90e3cae5a9dd40c887622fff47 (diff) | |
download | chromium_src-939fab9259ba1d9e4b5f735ef41ce43229b4e456.zip chromium_src-939fab9259ba1d9e4b5f735ef41ce43229b4e456.tar.gz chromium_src-939fab9259ba1d9e4b5f735ef41ce43229b4e456.tar.bz2 |
ash: Allow turning on/off wifi/cellular networks from the uber tray.
Also, remove the 'airplane mode' entry from the list for now, since it's not
really implemented yet.
Also, make 'sign out' terminate ash-shell.
BUG=109480
TEST=none
Review URL: https://chromiumcodereview.appspot.com/9706079
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@127018 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'ash')
-rw-r--r-- | ash/ash_strings.grd | 12 | ||||
-rw-r--r-- | ash/shell.cc | 46 | ||||
-rw-r--r-- | ash/system/network/tray_network.cc | 43 | ||||
-rw-r--r-- | ash/system/tray/system_tray_delegate.h | 18 |
4 files changed, 117 insertions, 2 deletions
diff --git a/ash/ash_strings.grd b/ash/ash_strings.grd index 3da685d..df4bebb 100644 --- a/ash/ash_strings.grd +++ b/ash/ash_strings.grd @@ -202,6 +202,18 @@ This file contains the strings for ash. <message name="IDS_ASH_STATUS_TRAY_AIRPLANE_MODE" desc="The label used in the network dialog to turn on airplane mode."> Airplane mode </message> + <message name="IDS_ASH_STATUS_TRAY_ENABLE_WIFI" desc="The label used for the item to enable wifi."> + Enable Wi-fi + </message> + <message name="IDS_ASH_STATUS_TRAY_DISABLE_WIFI" desc="The label used for the item to disable wifi."> + Disable Wi-fi + </message> + <message name="IDS_ASH_STATUS_TRAY_ENABLE_MOBILE" desc="The label used for the item to enable cellular networks."> + Enable cellular + </message> + <message name="IDS_ASH_STATUS_TRAY_DISABLE_MOBILE" desc="The label used for the item to disable cellular networks."> + Disable cellular + </message> <message name="IDS_ASH_STATUS_TRAY_UPDATE" desc="The label used in the tray popup to notify that the user should restart to get system updates."> Restart to update </message> diff --git a/ash/shell.cc b/ash/shell.cc index e3f3ebd..64bd98d 100644 --- a/ash/shell.cc +++ b/ash/shell.cc @@ -221,6 +221,8 @@ class DummySystemTrayDelegate : public SystemTrayDelegate { public: DummySystemTrayDelegate() : muted_(false), + wifi_enabled_(true), + cellular_enabled_(true), volume_(0.5) { } @@ -286,7 +288,11 @@ class DummySystemTrayDelegate : public SystemTrayDelegate { } virtual void ShutDown() OVERRIDE {} - virtual void SignOut() OVERRIDE {} + + virtual void SignOut() OVERRIDE { + MessageLoop::current()->Quit(); + } + virtual void RequestLockScreen() OVERRIDE {} virtual NetworkIconInfo GetMostRelevantNetworkIcon(bool large) OVERRIDE { return NetworkIconInfo(); @@ -301,10 +307,48 @@ class DummySystemTrayDelegate : public SystemTrayDelegate { virtual void ToggleAirplaneMode() OVERRIDE { } + virtual void ToggleWifi() OVERRIDE { + wifi_enabled_ = !wifi_enabled_; + ash::NetworkObserver* observer = + ash::Shell::GetInstance()->tray()->network_controller(); + if (observer) { + ash::NetworkIconInfo info; + observer->OnNetworkRefresh(info); + } + } + + virtual void ToggleCellular() OVERRIDE { + cellular_enabled_ = !cellular_enabled_; + ash::NetworkObserver* observer = + ash::Shell::GetInstance()->tray()->network_controller(); + if (observer) { + ash::NetworkIconInfo info; + observer->OnNetworkRefresh(info); + } + } + + virtual bool GetWifiAvailable() OVERRIDE { + return true; + } + + virtual bool GetCellularAvailable() OVERRIDE { + return true; + } + + virtual bool GetWifiEnabled() OVERRIDE { + return wifi_enabled_; + } + + virtual bool GetCellularEnabled() OVERRIDE { + return cellular_enabled_; + } + virtual void ChangeProxySettings() OVERRIDE { } bool muted_; + bool wifi_enabled_; + bool cellular_enabled_; float volume_; SkBitmap null_image_; diff --git a/ash/system/network/tray_network.cc b/ash/system/network/tray_network.cc index 84d2db2..4d44936 100644 --- a/ash/system/network/tray_network.cc +++ b/ash/system/network/tray_network.cc @@ -241,10 +241,13 @@ class NetworkDetailedView : public views::View, : login_(login), header_(NULL), airplane_(NULL), + toggle_wifi_(NULL), + toggle_mobile_(NULL), settings_(NULL), proxy_settings_(NULL) { SetLayoutManager(new views::BoxLayout( views::BoxLayout::kVertical, 1, 1, 1)); + set_background(views::Background::CreateSolidBackground(SK_ColorWHITE)); Update(); } @@ -253,10 +256,19 @@ class NetworkDetailedView : public views::View, void Update() { RemoveAllChildViews(true); + header_ = NULL; + airplane_ = NULL; + toggle_wifi_ = NULL; + toggle_mobile_ = NULL; + settings_ = NULL; + proxy_settings_ = NULL; + AppendHeaderEntry(); AppendNetworkEntries(); - AppendAirplaneModeEntry(); + AppendNetworkToggles(); AppendSettingsEntry(); + + Layout(); } private: @@ -300,6 +312,29 @@ class NetworkDetailedView : public views::View, AddChildView(scroller); } + void AppendNetworkToggles() { + ash::SystemTrayDelegate* delegate = + ash::Shell::GetInstance()->tray_delegate(); + ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); + if (delegate->GetWifiAvailable()) { + HoverHighlightView* container = new HoverHighlightView(this); + container->AddLabel(rb.GetLocalizedString(delegate->GetWifiEnabled() ? + IDS_ASH_STATUS_TRAY_DISABLE_WIFI : + IDS_ASH_STATUS_TRAY_ENABLE_WIFI)); + AddChildView(container); + toggle_wifi_ = container; + } + + if (delegate->GetCellularAvailable()) { + HoverHighlightView* container = new HoverHighlightView(this); + container->AddLabel(rb.GetLocalizedString( + delegate->GetCellularEnabled() ? IDS_ASH_STATUS_TRAY_DISABLE_MOBILE : + IDS_ASH_STATUS_TRAY_ENABLE_MOBILE)); + AddChildView(container); + toggle_mobile_ = container; + } + } + void AppendAirplaneModeEntry() { ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); HoverHighlightView* container = new HoverHighlightView(this); @@ -341,6 +376,10 @@ class NetworkDetailedView : public views::View, delegate->ShowNetworkSettings(); } else if (sender == proxy_settings_) { delegate->ChangeProxySettings(); + } else if (sender == toggle_wifi_) { + delegate->ToggleWifi(); + } else if (sender == toggle_mobile_) { + delegate->ToggleCellular(); } else if (sender == airplane_) { delegate->ToggleAirplaneMode(); } else { @@ -357,6 +396,8 @@ class NetworkDetailedView : public views::View, std::map<views::View*, std::string> network_map_; views::View* header_; views::View* airplane_; + views::View* toggle_wifi_; + views::View* toggle_mobile_; views::View* settings_; views::View* proxy_settings_; DISALLOW_COPY_AND_ASSIGN(NetworkDetailedView); diff --git a/ash/system/tray/system_tray_delegate.h b/ash/system/tray/system_tray_delegate.h index 1bf268b..9d91a38 100644 --- a/ash/system/tray/system_tray_delegate.h +++ b/ash/system/tray/system_tray_delegate.h @@ -95,6 +95,24 @@ class SystemTrayDelegate { // Toggles airplane mode. virtual void ToggleAirplaneMode() = 0; + // Toggles wifi network. + virtual void ToggleWifi() = 0; + + // Toggles cellular network. + virtual void ToggleCellular() = 0; + + // Returns whether wifi is available. + virtual bool GetWifiAvailable() = 0; + + // Returns whether cellular networking is available. + virtual bool GetCellularAvailable() = 0; + + // Returns whether wifi is enabled. + virtual bool GetWifiEnabled() = 0; + + // Returns whether cellular networking is enabled. + virtual bool GetCellularEnabled() = 0; + // Shows UI for changing proxy settings. virtual void ChangeProxySettings() = 0; }; |