summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
authorchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-19 23:48:12 +0000
committerchocobo@chromium.org <chocobo@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-19 23:48:12 +0000
commit3c30891915a40bac4cee93a6dc9246cf1e8d9c95 (patch)
tree32044d3196735a4abf1b5533776868de072c9899 /chrome/browser
parentba388887c335ee6e1c7ef1ff065aa550ad1bd9bf (diff)
downloadchromium_src-3c30891915a40bac4cee93a6dc9246cf1e8d9c95.zip
chromium_src-3c30891915a40bac4cee93a6dc9246cf1e8d9c95.tar.gz
chromium_src-3c30891915a40bac4cee93a6dc9246cf1e8d9c95.tar.bz2
New network menu button UI for ChromeOS.
Added ability to change label font in gtk menu item. TEST=none BUG=none Review URL: http://codereview.chromium.org/650074 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@39516 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/chromeos/cros/network_library.cc11
-rw-r--r--chrome/browser/chromeos/cros/network_library.h3
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.cc220
-rw-r--r--chrome/browser/chromeos/status/network_menu_button.h7
4 files changed, 101 insertions, 140 deletions
diff --git a/chrome/browser/chromeos/cros/network_library.cc b/chrome/browser/chromeos/cros/network_library.cc
index d863dbb..25e53eb 100644
--- a/chrome/browser/chromeos/cros/network_library.cc
+++ b/chrome/browser/chromeos/cros/network_library.cc
@@ -387,4 +387,15 @@ bool NetworkLibrary::Connected() const {
return ethernet_connected() || wifi_connected() || cellular_connected();
}
+const std::string& NetworkLibrary::IPAddress() const {
+ // Returns highest priority IP address.
+ if (ethernet_connected())
+ return ethernet_.ip_address;
+ if (wifi_connected())
+ return wifi_.ip_address;
+ if (cellular_connected())
+ return cellular_.ip_address;
+ return ethernet_.ip_address;
+}
+
} // namespace chromeos
diff --git a/chrome/browser/chromeos/cros/network_library.h b/chrome/browser/chromeos/cros/network_library.h
index 57cef8c..94d5ba0 100644
--- a/chrome/browser/chromeos/cros/network_library.h
+++ b/chrome/browser/chromeos/cros/network_library.h
@@ -174,6 +174,9 @@ class NetworkLibrary : public URLRequestJobTracker::JobObserver {
// Return true if any network is currently connected.
bool Connected() const;
+ // Returns the current IP address if connected. If not, returns empty string.
+ const std::string& IPAddress() const;
+
// Returns the current list of wifi networks.
const WifiNetworkVector& wifi_networks() const { return wifi_networks_; }
diff --git a/chrome/browser/chromeos/status/network_menu_button.cc b/chrome/browser/chromeos/status/network_menu_button.cc
index dbeb0f6..26a3653 100644
--- a/chrome/browser/chromeos/status/network_menu_button.cc
+++ b/chrome/browser/chromeos/status/network_menu_button.cc
@@ -55,6 +55,12 @@ string16 NetworkMenuButton::GetLabelAt(int index) const {
return menu_items_[index].label;
}
+const gfx::Font* NetworkMenuButton::GetLabelFontAt(int index) const {
+ return (menu_items_[index].flags & FLAG_BOLD) ?
+ &ResourceBundle::GetSharedInstance().GetFont(ResourceBundle::BoldFont) :
+ NULL;
+}
+
bool NetworkMenuButton::IsItemCheckedAt(int index) const {
// All menus::MenuModel::TYPE_CHECK menu items are checked.
return true;
@@ -62,7 +68,10 @@ bool NetworkMenuButton::IsItemCheckedAt(int index) const {
bool NetworkMenuButton::GetIconAt(int index, SkBitmap* icon) const {
if (!menu_items_[index].icon.empty()) {
- *icon = menu_items_[index].icon;
+ // Make icon smaller (if necessary) to look better in the menu.
+ static const int kMinSize = 8;
+ *icon = SkBitmapOperations::DownsampleByTwoUntilSize(
+ menu_items_[index].icon, kMinSize, kMinSize);
return true;
}
return false;
@@ -87,7 +96,7 @@ void NetworkMenuButton::ActivatedAt(int index) {
cros->EnableCellularNetworkDevice(!cros->cellular_enabled());
} else if (menu_items_[index].flags & FLAG_TOGGLE_OFFLINE) {
cros->EnableOfflineMode(!cros->offline_mode());
- } else if (menu_items_[index].flags & FLAG_ACTIVATE_WIFI) {
+ } else if (menu_items_[index].flags & FLAG_WIFI) {
activated_wifi_network_ = menu_items_[index].wifi_network;
// If clicked on a network that we are already connected to or we are
@@ -112,7 +121,12 @@ void NetworkMenuButton::ActivatedAt(int index) {
window->SetBounds(gfx::Rect(point, size), parent_window_);
window->Show();
}
- } else if (menu_items_[index].flags & FLAG_ACTIVATE_CELLULAR) {
+ } else if (menu_items_[index].flags & FLAG_CELLULAR) {
+ // If clicked on a network that we are already connected to or we are
+ // currently trying to connect to, then do nothing.
+ if (menu_items_[index].cellular_network.name == cros->cellular_name())
+ return;
+
cros->ConnectToCellularNetwork(menu_items_[index].cellular_network);
}
}
@@ -348,156 +362,86 @@ void NetworkMenuButton::InitMenuItems() {
NetworkLibrary* cros = NetworkLibrary::Get();
ResourceBundle& rb = ResourceBundle::GetSharedInstance();
- bool offline_mode = cros->offline_mode();
-
- // Wifi: Status.
- int status = IDS_STATUSBAR_NETWORK_DEVICE_DISABLED;
- if (cros->wifi_connecting())
- status = IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING;
- else if (cros->wifi_connected())
- status = IDS_STATUSBAR_NETWORK_DEVICE_CONNECTED;
- else if (cros->wifi_enabled())
- status = IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED;
- string16 label =
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_STATUS,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI),
- l10n_util::GetStringUTF16(status));
- SkBitmap icon = cros->wifi_connected() ?
- IconForNetworkStrength(cros->wifi_strength(), true) :
+ // Ethernet
+ string16 label = l10n_util::GetStringUTF16(
+ IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET);
+ SkBitmap icon = cros->ethernet_connecting() || cros->ethernet_connected() ?
+ *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK) :
*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED);
+ int flag = (cros->ethernet_connecting() || cros->ethernet_connected()) ?
+ FLAG_ETHERNET & FLAG_BOLD : FLAG_ETHERNET;
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
- icon, WifiNetwork(), CellularNetwork(), FLAG_DISABLED));
+ icon, WifiNetwork(), CellularNetwork(), flag));
+
+ // Wifi
+ const WifiNetworkVector& wifi_networks = cros->wifi_networks();
+ // Wifi networks ssids.
+ for (size_t i = 0; i < wifi_networks.size(); ++i) {
+ label = ASCIIToUTF16(wifi_networks[i].ssid);
+ flag = (wifi_networks[i].ssid == cros->wifi_ssid()) ?
+ FLAG_WIFI & FLAG_BOLD : FLAG_WIFI;
+ menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
+ IconForNetworkStrength(wifi_networks[i].strength, true),
+ wifi_networks[i], CellularNetwork(), flag));
+ }
- // Turn Wifi Off.
- if (!offline_mode) {
- label = cros->wifi_enabled() ?
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_DISABLE,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)) :
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ENABLE,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI));
+ // Cellular
+ const CellularNetworkVector& cell_networks = cros->cellular_networks();
+ // Cellular networks ssids.
+ for (size_t i = 0; i < cell_networks.size(); ++i) {
+ label = ASCIIToUTF16(cell_networks[i].name);
+ flag = (cell_networks[i].name == cros->cellular_name()) ?
+ FLAG_CELLULAR & FLAG_BOLD : FLAG_CELLULAR;
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
- SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_WIFI));
-
- const WifiNetworkVector& networks = cros->wifi_networks();
- // Wifi networks ssids.
- if (networks.empty()) {
- // No networks available message.
- label =
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE));
- menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
- SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_DISABLED));
- } else {
- for (size_t i = 0; i < networks.size(); ++i) {
- label =
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT,
- ASCIIToUTF16(networks[i].ssid));
- if (networks[i].ssid == cros->wifi_ssid()) {
- menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_CHECK, label,
- SkBitmap(), networks[i], CellularNetwork(), FLAG_ACTIVATE_WIFI));
- } else {
- menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
- SkBitmap(), networks[i], CellularNetwork(), FLAG_ACTIVATE_WIFI));
- }
- }
- }
+ IconForNetworkStrength(cell_networks[i].strength, true),
+ WifiNetwork(), cell_networks[i], flag));
+ }
- // Separator.
- menu_items_.push_back(MenuItem());
+ // No networks available message.
+ if (wifi_networks.empty() && cell_networks.empty()) {
+ label = l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT,
+ l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE));
+ menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
+ SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_DISABLED));
}
- // Cellular: Status.
- status = IDS_STATUSBAR_NETWORK_DEVICE_DISABLED;
- if (cros->cellular_connecting())
- status = IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING;
- else if (cros->cellular_connected())
- status = IDS_STATUSBAR_NETWORK_DEVICE_CONNECTED;
- else if (cros->cellular_enabled())
- status = IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED;
- label =
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_STATUS,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR),
- l10n_util::GetStringUTF16(status));
- icon = cros->cellular_connected() ?
- IconForNetworkStrength(cros->cellular_strength(), true) :
- *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED);
- menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
- icon, WifiNetwork(), CellularNetwork(), FLAG_DISABLED));
+ // Separator.
+ menu_items_.push_back(MenuItem());
- // Turn Cellular Off.
- if (!offline_mode) {
- label = cros->cellular_enabled() ?
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_DISABLE,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)) :
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ENABLE,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR));
- menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
- SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_CELLULAR));
-
- const CellularNetworkVector& networks = cros->cellular_networks();
- // Cellular networks ssids.
- if (networks.empty()) {
- // No networks available message.
- label =
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE));
- menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
- SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_DISABLED));
- } else {
- for (size_t i = 0; i < networks.size(); ++i) {
- label =
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT,
- ASCIIToUTF16(networks[i].name));
- if (networks[i].name == cros->cellular_name()) {
- menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_CHECK, label,
- SkBitmap(), WifiNetwork(), networks[i], FLAG_ACTIVATE_CELLULAR));
- } else {
- menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
- SkBitmap(), WifiNetwork(), networks[i], FLAG_ACTIVATE_CELLULAR));
- }
- }
- }
+ // TODO(chocobo): Uncomment once we figure out how to do offline mode.
+ // Offline mode.
+// menu_items_.push_back(MenuItem(cros->offline_mode() ?
+// menus::MenuModel::TYPE_CHECK : menus::MenuModel::TYPE_COMMAND,
+// l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OFFLINE_MODE),
+// SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_OFFLINE));
- // Separator.
- menu_items_.push_back(MenuItem());
- }
+ // Turn Wifi Off.
+ label = cros->wifi_enabled() ?
+ l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_DISABLE,
+ l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)) :
+ l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ENABLE,
+ l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI));
+ menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
+ SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_WIFI));
- // Ethernet: Status.
- status = IDS_STATUSBAR_NETWORK_DEVICE_DISABLED;
- if (cros->ethernet_connecting())
- status = IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING;
- else if (cros->ethernet_connected())
- status = IDS_STATUSBAR_NETWORK_DEVICE_CONNECTED;
- else if (cros->ethernet_enabled())
- status = IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED;
- label = l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_STATUS,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET),
- l10n_util::GetStringUTF16(status));
- icon = cros->ethernet_connected() ?
- *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK) :
- *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED);
+ // Turn Cellular Off.
+ label = cros->cellular_enabled() ?
+ l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_DISABLE,
+ l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)) :
+ l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ENABLE,
+ l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR));
menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
- icon, WifiNetwork(), CellularNetwork(), FLAG_DISABLED));
-
- // Turn Ethernet Off.
- if (!offline_mode) {
- label = cros->ethernet_enabled() ?
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_DISABLE,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET)) :
- l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ENABLE,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET));
- menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label,
- SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_ETHERNET));
+ SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_CELLULAR));
+ // IP address
+ if (cros->Connected()) {
// Separator.
menu_items_.push_back(MenuItem());
- }
- // Offline mode.
- menu_items_.push_back(MenuItem(offline_mode ?
- menus::MenuModel::TYPE_CHECK : menus::MenuModel::TYPE_COMMAND,
- l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OFFLINE_MODE),
- SkBitmap(), WifiNetwork(), CellularNetwork(), FLAG_TOGGLE_OFFLINE));
+ menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND,
+ ASCIIToUTF16(cros->IPAddress()), SkBitmap(),
+ WifiNetwork(), CellularNetwork(), FLAG_DISABLED));
+ }
}
} // namespace chromeos
diff --git a/chrome/browser/chromeos/status/network_menu_button.h b/chrome/browser/chromeos/status/network_menu_button.h
index 1ebd3db4..97b9841 100644
--- a/chrome/browser/chromeos/status/network_menu_button.h
+++ b/chrome/browser/chromeos/status/network_menu_button.h
@@ -67,6 +67,7 @@ class NetworkMenuButton : public StatusAreaButton,
virtual int GetCommandIdAt(int index) const { return index; }
virtual string16 GetLabelAt(int index) const;
virtual bool IsLabelDynamicAt(int index) const { return true; }
+ virtual const gfx::Font* GetLabelFontAt(int index) const;
virtual bool GetAcceleratorAt(int index,
menus::Accelerator* accelerator) const { return false; }
virtual bool IsItemCheckedAt(int index) const;
@@ -101,8 +102,10 @@ class NetworkMenuButton : public StatusAreaButton,
FLAG_TOGGLE_WIFI = 1 << 2,
FLAG_TOGGLE_CELLULAR = 1 << 3,
FLAG_TOGGLE_OFFLINE = 1 << 4,
- FLAG_ACTIVATE_WIFI = 1 << 5,
- FLAG_ACTIVATE_CELLULAR = 1 << 6
+ FLAG_BOLD = 1 << 5,
+ FLAG_ETHERNET = 1 << 6,
+ FLAG_WIFI = 1 << 7,
+ FLAG_CELLULAR = 1 << 8,
};
struct MenuItem {