diff options
author | chocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-15 23:35:00 +0000 |
---|---|---|
committer | chocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-15 23:35:00 +0000 |
commit | f49a0c88d5579bcd9a3d20668dcba469ceb90a55 (patch) | |
tree | 3973c0067884c202e019037f8268f88a23a6c917 | |
parent | d54d179d82768d08d901ffcba10d8a05f276138b (diff) | |
download | chromium_src-f49a0c88d5579bcd9a3d20668dcba469ceb90a55.zip chromium_src-f49a0c88d5579bcd9a3d20668dcba469ceb90a55.tar.gz chromium_src-f49a0c88d5579bcd9a3d20668dcba469ceb90a55.tar.bz2 |
Add auto-connect option in cellular config dialogs.
BUG=chromium-os:4312
TEST=none
Review URL: http://codereview.chromium.org/2805079
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52573 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | chrome/app/generated_resources.grd | 4 | ||||
-rw-r--r-- | chrome/browser/chromeos/cros/mock_network_library.h | 1 | ||||
-rw-r--r-- | chrome/browser/chromeos/cros/network_library.cc | 13 | ||||
-rw-r--r-- | chrome/browser/chromeos/cros/network_library.h | 4 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/cellular_config_view.cc | 63 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/cellular_config_view.h | 45 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/network_config_view.cc | 24 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/network_config_view.h | 2 | ||||
-rw-r--r-- | chrome/browser/chromeos/options/wifi_config_view.cc | 2 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 2 |
10 files changed, 154 insertions, 6 deletions
diff --git a/chrome/app/generated_resources.grd b/chrome/app/generated_resources.grd index 329989b..f22c03d 100644 --- a/chrome/app/generated_resources.grd +++ b/chrome/app/generated_resources.grd @@ -7754,7 +7754,7 @@ Keep your key file in a safe place. You will need it to create new versions of y <message name="IDS_OPTIONS_SETTINGS_SECTION_TITLE_ACCESSIBILITY"> Accessibility </message> - <message name="IDS_OPTIONS_SETTINGS_SECTION_TITLE_WIFI_CONFIG"> + <message name="IDS_OPTIONS_SETTINGS_SECTION_TITLE_NETWORK_CONFIG"> Wireless </message> <message name="IDS_OPTIONS_SETTINGS_SECTION_TITLE_IP_CONFIG"> @@ -7808,7 +7808,7 @@ Keep your key file in a safe place. You will need it to create new versions of y <message name="IDS_OPTIONS_SETTINGS_OTHER_NETWORKS" desc="In the settings tab, the text on the button to display other networks."> Other... </message> - <message name="IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SSID" desc="In settings internet options, the label for the ssid."> + <message name="IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_NETWORK_ID" desc="In settings internet options, the label for the network id."> Network id: </message> <message name="IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_CERT_IDENTITY" desc="In settings internet options, the user identity for authentication."> diff --git a/chrome/browser/chromeos/cros/mock_network_library.h b/chrome/browser/chromeos/cros/mock_network_library.h index 7ae212e..e4e56fb 100644 --- a/chrome/browser/chromeos/cros/mock_network_library.h +++ b/chrome/browser/chromeos/cros/mock_network_library.h @@ -62,6 +62,7 @@ class MockNetworkLibrary : public NetworkLibrary { bool)); MOCK_METHOD1(ConnectToCellularNetwork, void(CellularNetwork)); MOCK_METHOD1(DisconnectFromWirelessNetwork, void(const WirelessNetwork&)); + MOCK_METHOD1(SaveCellularNetwork, void(const CellularNetwork&)); MOCK_METHOD1(SaveWifiNetwork, void(const WifiNetwork&)); MOCK_METHOD1(ForgetWirelessNetwork, void(const WirelessNetwork&)); diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc index 46fd7ae..105442d 100644 --- a/chrome/browser/chromeos/cros/network_library.cc +++ b/chrome/browser/chromeos/cros/network_library.cc @@ -431,6 +431,19 @@ void NetworkLibraryImpl::DisconnectFromWirelessNetwork( } } +void NetworkLibraryImpl::SaveCellularNetwork(const CellularNetwork& network) { + // Update the wifi network in the local cache. + CellularNetwork* cellular = GetWirelessNetworkByPath(cellular_networks_, + network.service_path()); + if (cellular) + *cellular = network; + + // Update the cellular network with libcros. + if (CrosLibrary::Get()->EnsureLoaded()) { + SetAutoConnect(network.service_path().c_str(), network.auto_connect()); + } +} + void NetworkLibraryImpl::SaveWifiNetwork(const WifiNetwork& network) { // Update the wifi network in the local cache. WifiNetwork* wifi = GetWirelessNetworkByPath(wifi_networks_, diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h index df55c07..b01089e 100644 --- a/chrome/browser/chromeos/cros/network_library.h +++ b/chrome/browser/chromeos/cros/network_library.h @@ -330,7 +330,8 @@ class NetworkLibrary { virtual void DisconnectFromWirelessNetwork( const WirelessNetwork& network) = 0; - // Set whether or not to auto-connect to this network. + // Save network information including passwords (wifi) and auto-connect. + virtual void SaveCellularNetwork(const CellularNetwork& network) = 0; virtual void SaveWifiNetwork(const WifiNetwork& network) = 0; // Forget the passed in wireless (either cellular or wifi) network. @@ -443,6 +444,7 @@ class NetworkLibraryImpl : public NetworkLibrary, bool auto_connect); virtual void ConnectToCellularNetwork(CellularNetwork network); virtual void DisconnectFromWirelessNetwork(const WirelessNetwork& network); + virtual void SaveCellularNetwork(const CellularNetwork& network); virtual void SaveWifiNetwork(const WifiNetwork& network); virtual void ForgetWirelessNetwork(const WirelessNetwork& network); diff --git a/chrome/browser/chromeos/options/cellular_config_view.cc b/chrome/browser/chromeos/options/cellular_config_view.cc new file mode 100644 index 0000000..be1e761 --- /dev/null +++ b/chrome/browser/chromeos/options/cellular_config_view.cc @@ -0,0 +1,63 @@ +// Copyright (c) 2010 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. + +#include "chrome/browser/chromeos/options/cellular_config_view.h" + +#include "app/l10n_util.h" +#include "chrome/browser/chromeos/cros/cros_library.h" +#include "chrome/browser/chromeos/options/network_config_view.h" +#include "grit/generated_resources.h" +#include "views/controls/label.h" +#include "views/grid_layout.h" +#include "views/standard_layout.h" + +namespace chromeos { + +CellularConfigView::CellularConfigView(NetworkConfigView* parent, + const CellularNetwork& cellular) + : parent_(parent), + cellular_(cellular), + autoconnect_checkbox_(NULL) { + Init(); +} + +bool CellularConfigView::Save() { + // Save auto-connect here. + bool auto_connect = autoconnect_checkbox_->checked(); + if (auto_connect != cellular_.auto_connect()) { + cellular_.set_auto_connect(auto_connect); + CrosLibrary::Get()->GetNetworkLibrary()->SaveCellularNetwork(cellular_); + } + return true; +} + +void CellularConfigView::Init() { + views::GridLayout* layout = CreatePanelGridLayout(this); + SetLayoutManager(layout); + + int column_view_set_id = 0; + views::ColumnSet* column_set = layout->AddColumnSet(column_view_set_id); + column_set->AddColumn(views::GridLayout::LEADING, views::GridLayout::FILL, 1, + views::GridLayout::USE_PREF, 0, 0); + column_set->AddColumn(views::GridLayout::FILL, views::GridLayout::FILL, 1, + views::GridLayout::USE_PREF, 0, 0); + + layout->StartRow(0, column_view_set_id); + layout->AddView(new views::Label(l10n_util::GetString( + IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_NETWORK_ID))); + views::Label* label = new views::Label(ASCIIToWide(cellular_.name())); + label->SetHorizontalAlignment(views::Label::ALIGN_LEFT); + layout->AddView(label); + layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); + + // Autoconnect checkbox + autoconnect_checkbox_ = new views::Checkbox( + l10n_util::GetString(IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_AUTO_CONNECT)); + autoconnect_checkbox_->SetChecked(cellular_.auto_connect()); + layout->StartRow(0, column_view_set_id); + layout->AddView(autoconnect_checkbox_, 2, 1); + layout->AddPaddingRow(0, kRelatedControlVerticalSpacing); +} + +} // namespace chromeos diff --git a/chrome/browser/chromeos/options/cellular_config_view.h b/chrome/browser/chromeos/options/cellular_config_view.h new file mode 100644 index 0000000..f2ad38e --- /dev/null +++ b/chrome/browser/chromeos/options/cellular_config_view.h @@ -0,0 +1,45 @@ +// Copyright (c) 2006-2008 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 CHROME_BROWSER_CHROMEOS_OPTIONS_CELLULAR_CONFIG_VIEW_H_ +#define CHROME_BROWSER_CHROMEOS_OPTIONS_CELLULAR_CONFIG_VIEW_H_ + +#include <string> + +#include "chrome/browser/chromeos/cros/network_library.h" +#include "views/controls/button/checkbox.h" +#include "views/view.h" + +namespace chromeos { + +class NetworkConfigView; + +// A dialog box for showing a password textfield. +class CellularConfigView : public views::View { + public: + CellularConfigView(NetworkConfigView* parent, + const CellularNetwork& cellular); + explicit CellularConfigView(NetworkConfigView* parent); + virtual ~CellularConfigView() {} + + // Save network information. + virtual bool Save(); + + private: + + // Initializes UI. + void Init(); + + NetworkConfigView* parent_; + + CellularNetwork cellular_; + + views::Checkbox* autoconnect_checkbox_; + + DISALLOW_COPY_AND_ASSIGN(CellularConfigView); +}; + +} // namespace chromeos + +#endif // CHROME_BROWSER_CHROMEOS_OPTIONS_CELLULAR_CONFIG_VIEW_H_ diff --git a/chrome/browser/chromeos/options/network_config_view.cc b/chrome/browser/chromeos/options/network_config_view.cc index d779862..b139b56 100644 --- a/chrome/browser/chromeos/options/network_config_view.cc +++ b/chrome/browser/chromeos/options/network_config_view.cc @@ -6,6 +6,7 @@ #include "app/l10n_util.h" #include "base/string_util.h" +#include "chrome/browser/chromeos/options/cellular_config_view.h" #include "chrome/browser/chromeos/options/ip_config_view.h" #include "chrome/browser/chromeos/options/wifi_config_view.h" #include "grit/chromium_strings.h" @@ -24,6 +25,7 @@ NetworkConfigView::NetworkConfigView(EthernetNetwork ethernet) : browser_mode_(true), flags_(FLAG_ETHERNET | FLAG_SHOW_IPCONFIG), ethernet_(ethernet), + cellularconfig_view_(NULL), wificonfig_view_(NULL), ipconfig_view_(NULL), delegate_(NULL) { @@ -33,6 +35,7 @@ NetworkConfigView::NetworkConfigView(WifiNetwork wifi, bool login_only) : browser_mode_(true), flags_(FLAG_WIFI), wifi_(wifi), + cellularconfig_view_(NULL), wificonfig_view_(NULL), ipconfig_view_(NULL), delegate_(NULL) { @@ -46,6 +49,7 @@ NetworkConfigView::NetworkConfigView(CellularNetwork cellular) : browser_mode_(true), flags_(FLAG_CELLULAR | FLAG_SHOW_IPCONFIG), cellular_(cellular), + cellularconfig_view_(NULL), wificonfig_view_(NULL), ipconfig_view_(NULL), delegate_(NULL) { @@ -54,6 +58,7 @@ NetworkConfigView::NetworkConfigView(CellularNetwork cellular) NetworkConfigView::NetworkConfigView() : browser_mode_(true), flags_(FLAG_WIFI | FLAG_LOGIN_ONLY | FLAG_OTHER_NETWORK), + cellularconfig_view_(NULL), wificonfig_view_(NULL), ipconfig_view_(NULL), delegate_(NULL) { @@ -90,6 +95,9 @@ bool NetworkConfigView::Cancel() { bool NetworkConfigView::Accept() { bool result = true; + if (flags_ & FLAG_CELLULAR) { + result = cellularconfig_view_->Save(); + } if (flags_ & FLAG_WIFI) { if (flags_ & FLAG_LOGIN_ONLY) result = wificonfig_view_->Login(); @@ -131,7 +139,13 @@ gfx::Size NetworkConfigView::GetPreferredSize() { IDS_IMPORT_DIALOG_HEIGHT_LINES)); result.set_height(0); // IMPORT_DIALOG height is too large // Expand the default size to fit results if necessary - if (wificonfig_view_) { + if (cellularconfig_view_) { + gfx::Size s = cellularconfig_view_->GetPreferredSize(); + s.set_height(s.height() + kPanelVertMargin * 2); + s.set_width(s.width() + kPanelHorizMargin * 2); + result = gfx::Size(std::max(result.width(), s.width()), + std::max(result.height(), s.height())); + } else if (wificonfig_view_) { gfx::Size s = wificonfig_view_->GetPreferredSize(); s.set_height(s.height() + kPanelVertMargin * 2); s.set_width(s.width() + kPanelHorizMargin * 2); @@ -161,13 +175,19 @@ void NetworkConfigView::Init() { tabs_->SetListener(this); AddChildView(tabs_); + if (flags_ & FLAG_CELLULAR) { + cellularconfig_view_ = new CellularConfigView(this, cellular_); + tabs_->AddTab( + l10n_util::GetString(IDS_OPTIONS_SETTINGS_SECTION_TITLE_NETWORK_CONFIG), + cellularconfig_view_); + } if (flags_ & FLAG_WIFI) { if (flags_ & FLAG_OTHER_NETWORK) wificonfig_view_ = new WifiConfigView(this); else wificonfig_view_ = new WifiConfigView(this, wifi_); tabs_->AddTab( - l10n_util::GetString(IDS_OPTIONS_SETTINGS_SECTION_TITLE_WIFI_CONFIG), + l10n_util::GetString(IDS_OPTIONS_SETTINGS_SECTION_TITLE_NETWORK_CONFIG), wificonfig_view_); } diff --git a/chrome/browser/chromeos/options/network_config_view.h b/chrome/browser/chromeos/options/network_config_view.h index 9a3b771..2bdd392 100644 --- a/chrome/browser/chromeos/options/network_config_view.h +++ b/chrome/browser/chromeos/options/network_config_view.h @@ -21,6 +21,7 @@ class Window; namespace chromeos { class IPConfigView; +class CellularConfigView; class WifiConfigView; // A dialog box for showing a password textfield. @@ -119,6 +120,7 @@ class NetworkConfigView : public views::View, WifiNetwork wifi_; CellularNetwork cellular_; + CellularConfigView* cellularconfig_view_; WifiConfigView* wificonfig_view_; IPConfigView* ipconfig_view_; diff --git a/chrome/browser/chromeos/options/wifi_config_view.cc b/chrome/browser/chromeos/options/wifi_config_view.cc index 2d79c05..8c7d95f 100644 --- a/chrome/browser/chromeos/options/wifi_config_view.cc +++ b/chrome/browser/chromeos/options/wifi_config_view.cc @@ -218,7 +218,7 @@ void WifiConfigView::Init() { layout->StartRow(0, column_view_set_id); layout->AddView(new views::Label(l10n_util::GetString( - IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_SSID))); + IDS_OPTIONS_SETTINGS_INTERNET_OPTIONS_NETWORK_ID))); if (other_network_) { ssid_textfield_ = new views::Textfield(views::Textfield::STYLE_DEFAULT); ssid_textfield_->SetController(this); diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index 574a2fb..52820d8 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -520,6 +520,8 @@ 'browser/chromeos/network_state_notifier.h', 'browser/chromeos/network_message_observer.cc', 'browser/chromeos/network_message_observer.h', + 'browser/chromeos/options/cellular_config_view.cc', + 'browser/chromeos/options/cellular_config_view.h', 'browser/chromeos/offline/offline_load_page.cc', 'browser/chromeos/offline/offline_load_page.h', 'browser/chromeos/offline/offline_load_service.cc', |