summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-22 21:30:29 +0000
committerchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-22 21:30:29 +0000
commita6c92911279cec35ecb0906f860b4aeea179267b (patch)
treef6aff89392be604a1dc0deb26cbac05a06bd1b08 /chrome/browser
parent39c74921db1ccd9610216f970860ad401ce303cf (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/chromeos/frame/browser_view.cc6
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.cc26
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.h11
-rwxr-xr-xchrome/browser/chromeos/status/status_area_view.cc3
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_);
}