diff options
author | chocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-22 21:30:29 +0000 |
---|---|---|
committer | chocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-22 21:30:29 +0000 |
commit | a6c92911279cec35ecb0906f860b4aeea179267b (patch) | |
tree | f6aff89392be604a1dc0deb26cbac05a06bd1b08 /chrome/browser | |
parent | 39c74921db1ccd9610216f970860ad401ce303cf (diff) | |
download | chromium_src-a6c92911279cec35ecb0906f860b4aeea179267b.zip chromium_src-a6c92911279cec35ecb0906f860b4aeea179267b.tar.gz chromium_src-a6c92911279cec35ecb0906f860b4aeea179267b.tar.bz2 |
Add "Network settings..." menu item to network menu button for ChromeOS.
TEST=none
BUG=none
Review URL: http://codereview.chromium.org/650151
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39634 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
4 files changed, 33 insertions, 13 deletions
diff --git a/chrome/browser/chromeos/frame/browser_view.cc b/chrome/browser/chromeos/frame/browser_view.cc index d5cbddc..3a6724d 100644 --- a/chrome/browser/chromeos/frame/browser_view.cc +++ b/chrome/browser/chromeos/frame/browser_view.cc @@ -17,6 +17,7 @@ #include "chrome/browser/chromeos/frame/panel_browser_view.h" #include "chrome/browser/chromeos/main_menu.h" #include "chrome/browser/chromeos/status/browser_status_area_view.h" +#include "chrome/browser/chromeos/status/network_menu_button.h" #include "chrome/browser/chromeos/status/status_area_button.h" #include "chrome/browser/chromeos/wm_ipc.h" #include "chrome/browser/view_ids.h" @@ -471,7 +472,10 @@ bool BrowserView::ShouldOpenButtonOptions( } void BrowserView::OpenButtonOptions(const views::View* button_view) const { - browser()->OpenSystemOptionsDialog(); + if (button_view == status_area_->network_view()) + browser()->OpenInternetOptionsDialog(); + else + browser()->OpenSystemOptionsDialog(); } bool BrowserView::IsButtonVisible(const views::View* button_view) const { diff --git a/chrome/browser/chromeos/status/network_menu_button.cc b/chrome/browser/chromeos/status/network_menu_button.cc index 26a3653..34e1ae6 100644 --- a/chrome/browser/chromeos/status/network_menu_button.cc +++ b/chrome/browser/chromeos/status/network_menu_button.cc @@ -11,6 +11,7 @@ #include "app/l10n_util.h" #include "app/resource_bundle.h" #include "base/string_util.h" +#include "chrome/browser/chromeos/status/status_area_host.h" #include "grit/generated_resources.h" #include "grit/theme_resources.h" #include "views/widget/widget.h" @@ -25,10 +26,10 @@ namespace chromeos { const int NetworkMenuButton::kNumWifiImages = 9; const int NetworkMenuButton::kThrobDuration = 1000; -NetworkMenuButton::NetworkMenuButton(gfx::NativeWindow parent_window) +NetworkMenuButton::NetworkMenuButton(StatusAreaHost* host) : StatusAreaButton(this), + host_(host), ALLOW_THIS_IN_INITIALIZER_LIST(network_menu_(this)), - parent_window_(parent_window), ALLOW_THIS_IN_INITIALIZER_LIST(animation_connecting_(this)) { animation_connecting_.SetThrobDuration(kThrobDuration); animation_connecting_.SetTweenType(SlideAnimation::NONE); @@ -88,7 +89,9 @@ void NetworkMenuButton::ActivatedAt(int index) { NetworkLibrary* cros = NetworkLibrary::Get(); - if (menu_items_[index].flags & FLAG_TOGGLE_ETHERNET) { + if (menu_items_[index].flags & FLAG_OPTIONS) { + host_->OpenButtonOptions(this); + } else if (menu_items_[index].flags & FLAG_TOGGLE_ETHERNET) { cros->EnableEthernetNetworkDevice(!cros->ethernet_enabled()); } else if (menu_items_[index].flags & FLAG_TOGGLE_WIFI) { cros->EnableWifiNetworkDevice(!cros->wifi_enabled()); @@ -111,14 +114,14 @@ void NetworkMenuButton::ActivatedAt(int index) { } else { PasswordDialogView* dialog = new PasswordDialogView(this, activated_wifi_network_.ssid); - views::Window* window = views::Window::CreateChromeWindow(parent_window_, - gfx::Rect(), dialog); + views::Window* window = views::Window::CreateChromeWindow( + host_->GetNativeWindow(), gfx::Rect(), dialog); // Draw the password dialog right below this button and right aligned. gfx::Size size = dialog->GetPreferredSize(); gfx::Rect rect = bounds(); gfx::Point point = gfx::Point(rect.width() - size.width(), rect.height()); ConvertPointToScreen(this, &point); - window->SetBounds(gfx::Rect(point, size), parent_window_); + window->SetBounds(gfx::Rect(point, size), host_->GetNativeWindow()); window->Show(); } } else if (menu_items_[index].flags & FLAG_CELLULAR) { @@ -433,6 +436,17 @@ void NetworkMenuButton::InitMenuItems() { menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_CELLULAR)); + if (host_->ShouldOpenButtonOptions(this)) { + // Separator. + menu_items_.push_back(MenuItem()); + + // Network settings. + label = + l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG); + menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, + SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_OPTIONS)); + } + // IP address if (cros->Connected()) { // Separator. diff --git a/chrome/browser/chromeos/status/network_menu_button.h b/chrome/browser/chromeos/status/network_menu_button.h index 97b9841..072cb5f 100644 --- a/chrome/browser/chromeos/status/network_menu_button.h +++ b/chrome/browser/chromeos/status/network_menu_button.h @@ -24,6 +24,8 @@ class Canvas; namespace chromeos { +class StatusAreaHost; + // The network menu button in the status area. // This class will handle getting the wifi networks and populating the menu. // It will also handle the status icon changing and connecting to another @@ -57,7 +59,7 @@ class NetworkMenuButton : public StatusAreaButton, public PasswordDialogDelegate, public NetworkLibrary::Observer { public: - explicit NetworkMenuButton(gfx::NativeWindow parent_window); + explicit NetworkMenuButton(StatusAreaHost* host); virtual ~NetworkMenuButton(); // menus::MenuModel implementation. @@ -106,6 +108,7 @@ class NetworkMenuButton : public StatusAreaButton, FLAG_ETHERNET = 1 << 6, FLAG_WIFI = 1 << 7, FLAG_CELLULAR = 1 << 8, + FLAG_OPTIONS = 1 << 9, }; struct MenuItem { @@ -154,12 +157,12 @@ class NetworkMenuButton : public StatusAreaButton, // The activated wifi network. WifiNetwork activated_wifi_network_; + // The status area host, + StatusAreaHost* host_; + // The network menu. views::Menu2 network_menu_; - // Our parent window - gfx::NativeWindow parent_window_; - // The throb animation that does the wifi connecting animation. ThrobAnimation animation_connecting_; diff --git a/chrome/browser/chromeos/status/status_area_view.cc b/chrome/browser/chromeos/status/status_area_view.cc index e89a917..7e5ba46 100755 --- a/chrome/browser/chromeos/status/status_area_view.cc +++ b/chrome/browser/chromeos/status/status_area_view.cc @@ -52,8 +52,7 @@ void StatusAreaView::Init() { AddChildView(power_view_); // Network. - network_view_ = new NetworkMenuButton( - host_->GetNativeWindow()); + network_view_ = new NetworkMenuButton(host_); AddChildView(network_view_); } |