Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/chromeos/status/network_menu.h" | 5 #include "chrome/browser/chromeos/status/network_menu.h" |
| 6 | 6 |
| 7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
| 8 #include "app/resource_bundle.h" | 8 #include "app/resource_bundle.h" |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
| (...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 84 IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING) | 84 IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING) |
| 85 + ": " + wifi.GetStateString(); | 85 + ": " + wifi.GetStateString(); |
| 86 } else if (wifi.state() == STATE_FAILURE) { | 86 } else if (wifi.state() == STATE_FAILURE) { |
| 87 info->status = kNetworkStatusError; | 87 info->status = kNetworkStatusError; |
| 88 info->message = wifi.GetErrorString(); | 88 info->message = wifi.GetErrorString(); |
| 89 } else { | 89 } else { |
| 90 info->status = kNetworkStatusDisconnected; | 90 info->status = kNetworkStatusDisconnected; |
| 91 info->message = l10n_util::GetStringUTF8( | 91 info->message = l10n_util::GetStringUTF8( |
| 92 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); | 92 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); |
| 93 } | 93 } |
| 94 } else { | |
| 95 info->status = kNetworkStatusDisconnected; | |
| 96 info->message = l10n_util::GetStringUTF8( | |
| 97 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); | |
| 94 } | 98 } |
| 95 info->ip_address = wifi.ip_address(); | 99 info->ip_address = wifi.ip_address(); |
| 96 info->need_passphrase = wifi.encrypted(); | 100 info->need_passphrase = wifi.encrypted(); |
| 97 info->remembered = wifi.favorite(); | 101 info->remembered = wifi.favorite(); |
| 98 } else { | 102 } else { |
| 99 res = false; // Network not found, hide entry. | 103 res = false; // Network not found, hide entry. |
| 100 } | 104 } |
| 101 } else if (flags & FLAG_CELLULAR) { | 105 } else if (flags & FLAG_CELLULAR) { |
| 102 CellularNetwork cellular; | 106 CellularNetwork cellular; |
| 103 bool found = cros->FindCellularNetworkByPath( | 107 bool found = cros->FindCellularNetworkByPath( |
| (...skipping 12 matching lines...) Expand all Loading... | |
| 116 IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING) | 120 IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING) |
| 117 + ": " + cellular.GetStateString(); | 121 + ": " + cellular.GetStateString(); |
| 118 } else if (cellular.state() == STATE_FAILURE) { | 122 } else if (cellular.state() == STATE_FAILURE) { |
| 119 info->status = kNetworkStatusError; | 123 info->status = kNetworkStatusError; |
| 120 info->message = cellular.GetErrorString(); | 124 info->message = cellular.GetErrorString(); |
| 121 } else { | 125 } else { |
| 122 info->status = kNetworkStatusDisconnected; | 126 info->status = kNetworkStatusDisconnected; |
| 123 info->message = l10n_util::GetStringUTF8( | 127 info->message = l10n_util::GetStringUTF8( |
| 124 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); | 128 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); |
| 125 } | 129 } |
| 130 } else { | |
| 131 info->status = kNetworkStatusDisconnected; | |
| 132 info->message = l10n_util::GetStringUTF8( | |
| 133 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); | |
| 126 } | 134 } |
| 127 info->ip_address = cellular.ip_address(); | 135 info->ip_address = cellular.ip_address(); |
| 128 info->need_passphrase = false; | 136 info->need_passphrase = false; |
| 129 info->remembered = true; | 137 info->remembered = true; |
| 130 } else { | 138 } else { |
| 131 res = false; // Network not found, hide entry. | 139 res = false; // Network not found, hide entry. |
| 132 } | 140 } |
| 133 } else if (flags & FLAG_OTHER_NETWORK) { | 141 } else if (flags & FLAG_OTHER_NETWORK) { |
| 142 info->status = kNetworkStatusDisconnected; | |
| 143 info->message = l10n_util::GetStringUTF8( | |
| 144 IDS_STATUSBAR_NETWORK_DEVICE_DISCONNECTED); | |
| 134 info->network_type = kNetworkTypeOther; | 145 info->network_type = kNetworkTypeOther; |
| 135 info->need_passphrase = true; | 146 info->need_passphrase = true; |
| 136 info->remembered = true; | 147 info->remembered = true; |
| 137 } else { | 148 } else { |
| 138 // Not a network, e.g options, separator. | 149 // Not a network, e.g options, separator. |
| 139 } | 150 } |
| 140 return res; | 151 return res; |
| 141 } | 152 } |
| 142 | 153 |
| 154 void NetworkMenu::ConnectToNetworkAt(int index, | |
| 155 const std::string& passphrase, | |
| 156 const std::string& identity) const { | |
| 157 int flags = menu_items_[index].flags; | |
| 158 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | |
| 159 if (flags & FLAG_WIFI) { | |
| 160 WifiNetwork wifi; | |
| 161 bool found = cros->FindWifiNetworkByPath( | |
| 162 menu_items_[index].wireless_path, &wifi); | |
| 163 if (found) { | |
| 164 // Connect or reconnect. | |
| 165 if (wifi.encrypted()) { | |
| 166 if (wifi.IsCertificateLoaded()) { | |
| 167 cros->ConnectToWifiNetwork(wifi, std::string(), | |
| 168 std::string(), wifi.cert_path()); | |
| 169 } else { | |
| 170 // TODO(stevenjb): use passphrase/identity once provided. | |
| 171 // cros->ConnectToWifiNetwork(wifi, passphrase, | |
| 172 // identity, menu_items[index].path); | |
| 173 const bool kFocusLogin = true; | |
| 174 ShowNetworkConfigView(new NetworkConfigView(wifi, true), kFocusLogin); | |
| 175 } | |
| 176 } else { | |
| 177 cros->ConnectToWifiNetwork(wifi, std::string(), | |
| 178 std::string(), std::string()); | |
| 179 } | |
| 180 } | |
| 181 } else if (flags & FLAG_CELLULAR) { | |
| 182 CellularNetwork cellular; | |
| 183 bool found = cros->FindCellularNetworkByPath( | |
| 184 menu_items_[index].wireless_path, &cellular); | |
| 185 if (found) { | |
| 186 // Connect or reconnect. | |
| 187 cros->ConnectToCellularNetwork(cellular); | |
| 188 } | |
| 189 } else if (flags & FLAG_OTHER_NETWORK) { | |
| 190 const bool kFocusLogin = true; | |
| 191 ShowNetworkConfigView(new NetworkConfigView(), kFocusLogin); | |
| 192 } | |
| 193 } | |
| 194 | |
| 143 //////////////////////////////////////////////////////////////////////////////// | 195 //////////////////////////////////////////////////////////////////////////////// |
| 144 // NetworkMenu, menus::MenuModel implementation: | 196 // NetworkMenu, menus::MenuModel implementation: |
| 145 | 197 |
| 146 int NetworkMenu::GetItemCount() const { | 198 int NetworkMenu::GetItemCount() const { |
| 147 return static_cast<int>(menu_items_.size()); | 199 return static_cast<int>(menu_items_.size()); |
| 148 } | 200 } |
| 149 | 201 |
| 150 menus::MenuModel::ItemType NetworkMenu::GetTypeAt(int index) const { | 202 menus::MenuModel::ItemType NetworkMenu::GetTypeAt(int index) const { |
| 151 return menu_items_[index].type; | 203 return menu_items_[index].type; |
| 152 } | 204 } |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 171 *icon = menu_items_[index].icon; | 223 *icon = menu_items_[index].icon; |
| 172 return true; | 224 return true; |
| 173 } | 225 } |
| 174 return false; | 226 return false; |
| 175 } | 227 } |
| 176 | 228 |
| 177 bool NetworkMenu::IsEnabledAt(int index) const { | 229 bool NetworkMenu::IsEnabledAt(int index) const { |
| 178 return !(menu_items_[index].flags & FLAG_DISABLED); | 230 return !(menu_items_[index].flags & FLAG_DISABLED); |
| 179 } | 231 } |
| 180 | 232 |
| 181 void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) { | |
| 182 Browser* browser = BrowserList::GetLastActive(); | |
| 183 if (!browser) | |
| 184 return; | |
| 185 std::string page = StringPrintf("%s?servicePath=%s&networkType=%d", | |
| 186 chrome::kInternetOptionsSubPage, | |
| 187 EscapeUrlEncodedData(network.service_path()).c_str(), | |
| 188 network.type()); | |
| 189 browser->ShowOptionsTab(page); | |
| 190 } | |
| 191 | |
| 192 void NetworkMenu::ActivatedAt(int index) { | 233 void NetworkMenu::ActivatedAt(int index) { |
| 193 // When we are refreshing the menu, ignore menu item activation. | 234 // When we are refreshing the menu, ignore menu item activation. |
| 194 if (refreshing_menu_) | 235 if (refreshing_menu_) |
| 195 return; | 236 return; |
| 196 | 237 |
| 197 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | 238 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
| 198 int flags = menu_items_[index].flags; | 239 int flags = menu_items_[index].flags; |
| 199 if (flags & FLAG_OPTIONS) { | 240 if (flags & FLAG_OPTIONS) { |
| 200 OpenButtonOptions(); | 241 OpenButtonOptions(); |
| 201 } else if (flags & FLAG_TOGGLE_ETHERNET) { | 242 } else if (flags & FLAG_TOGGLE_ETHERNET) { |
| 202 cros->EnableEthernetNetworkDevice(!cros->ethernet_enabled()); | 243 cros->EnableEthernetNetworkDevice(!cros->ethernet_enabled()); |
| 203 } else if (flags & FLAG_TOGGLE_WIFI) { | 244 } else if (flags & FLAG_TOGGLE_WIFI) { |
| 204 cros->EnableWifiNetworkDevice(!cros->wifi_enabled()); | 245 cros->EnableWifiNetworkDevice(!cros->wifi_enabled()); |
| 205 } else if (flags & FLAG_TOGGLE_CELLULAR) { | 246 } else if (flags & FLAG_TOGGLE_CELLULAR) { |
| 206 cros->EnableCellularNetworkDevice(!cros->cellular_enabled()); | 247 cros->EnableCellularNetworkDevice(!cros->cellular_enabled()); |
| 207 } else if (flags & FLAG_TOGGLE_OFFLINE) { | 248 } else if (flags & FLAG_TOGGLE_OFFLINE) { |
| 208 cros->EnableOfflineMode(!cros->offline_mode()); | 249 cros->EnableOfflineMode(!cros->offline_mode()); |
| 209 } else if (flags & FLAG_OTHER_NETWORK) { | 250 } else if (flags & FLAG_OTHER_NETWORK) { |
| 210 NetworkConfigView* view = new NetworkConfigView(); | 251 const bool kFocusLogin = true; |
| 211 view->set_browser_mode(IsBrowserMode()); | 252 ShowNetworkConfigView(new NetworkConfigView(), kFocusLogin); |
| 212 views::Window* window = browser::CreateViewsWindow(GetNativeWindow(), | |
| 213 gfx::Rect(), | |
| 214 view); | |
| 215 window->SetIsAlwaysOnTop(true); | |
| 216 window->Show(); | |
| 217 view->SetLoginTextfieldFocus(); | |
| 218 } else if (flags & FLAG_ETHERNET) { | 253 } else if (flags & FLAG_ETHERNET) { |
| 219 if (cros->ethernet_connected()) { | 254 if (cros->ethernet_connected()) { |
| 220 if (CommandLine::ForCurrentProcess()->HasSwitch( | 255 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 221 switches::kEnableTabbedOptions)) { | 256 switches::kEnableTabbedOptions)) { |
| 222 ShowTabbedNetworkSettings(cros->ethernet_network()); | 257 ShowTabbedNetworkSettings(cros->ethernet_network()); |
| 223 } else { | 258 } else { |
| 224 NetworkConfigView* view = | 259 ShowNetworkConfigView( |
|
Charlie Lee
2010/10/15 06:34:32
while you are at it, add the const here also
| |
| 225 new NetworkConfigView(cros->ethernet_network()); | 260 new NetworkConfigView(cros->ethernet_network()), false); |
| 226 view->set_browser_mode(IsBrowserMode()); | |
| 227 views::Window* window = browser::CreateViewsWindow( | |
| 228 GetNativeWindow(), gfx::Rect(), view); | |
| 229 window->SetIsAlwaysOnTop(true); | |
| 230 window->Show(); | |
| 231 } | 261 } |
| 232 } | 262 } |
| 233 } else if (flags & FLAG_WIFI) { | 263 } else if (flags & FLAG_WIFI) { |
| 234 WifiNetwork wifi; | 264 WifiNetwork wifi; |
| 235 bool wifi_exists = cros->FindWifiNetworkByPath( | 265 bool wifi_exists = cros->FindWifiNetworkByPath( |
| 236 menu_items_[index].wireless_path, &wifi); | 266 menu_items_[index].wireless_path, &wifi); |
| 237 if (!wifi_exists) { | 267 if (!wifi_exists) { |
| 238 // If we are attempting to connect to a network that no longer exists, | 268 // If we are attempting to connect to a network that no longer exists, |
| 239 // display a notification. | 269 // display a notification. |
| 240 // TODO(stevenjb): Show notification. | 270 // TODO(stevenjb): Show notification. |
| 241 } else if (wifi.name() == cros->wifi_name()) { | 271 } else if (wifi.name() == cros->wifi_name()) { |
| 242 if (cros->wifi_connected()) { | 272 if (cros->wifi_connected()) { |
| 273 // If we are already connected, show the config settings. | |
| 243 if (CommandLine::ForCurrentProcess()->HasSwitch( | 274 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 244 switches::kEnableTabbedOptions)) { | 275 switches::kEnableTabbedOptions)) { |
| 245 ShowTabbedNetworkSettings(wifi); | 276 ShowTabbedNetworkSettings(wifi); |
| 246 } else { | 277 } else { |
| 247 // If we are already connected, open the config dialog. | 278 ShowNetworkConfigView(new NetworkConfigView(wifi, false), false); |
|
Charlie Lee
2010/10/15 06:34:32
and here
| |
| 248 NetworkConfigView* view = new NetworkConfigView(wifi, false); | |
| 249 view->set_browser_mode(IsBrowserMode()); | |
| 250 views::Window* window = browser::CreateViewsWindow( | |
| 251 GetNativeWindow(), gfx::Rect(), view); | |
| 252 window->SetIsAlwaysOnTop(true); | |
| 253 window->Show(); | |
| 254 } | 279 } |
| 255 } else { | 280 } else { |
| 256 // TODO(stevenjb): Connection in progress. Show dialog? | 281 // TODO(stevenjb): Connection in progress. Show dialog? |
| 257 } | 282 } |
| 258 } else { | 283 } else { |
| 259 // If wifi network is not encrypted, then directly connect. | 284 // If wifi network is not encrypted, then directly connect. |
| 260 // Otherwise, we open password dialog window. | 285 // Otherwise, open the password dialog window. |
| 261 if (!wifi.encrypted()) { | 286 if (!wifi.encrypted()) { |
| 262 cros->ConnectToWifiNetwork(wifi, std::string(), | 287 cros->ConnectToWifiNetwork(wifi, std::string(), |
| 263 std::string(), std::string()); | 288 std::string(), std::string()); |
| 264 } else { | 289 } else { |
| 265 NetworkConfigView* view = new NetworkConfigView(wifi, true); | 290 const bool kFocusLogin = true; |
| 266 view->set_browser_mode(IsBrowserMode()); | 291 ShowNetworkConfigView(new NetworkConfigView(wifi, true), kFocusLogin); |
| 267 views::Window* window = browser::CreateViewsWindow( | |
| 268 GetNativeWindow(), gfx::Rect(), view); | |
| 269 window->SetIsAlwaysOnTop(true); | |
| 270 window->Show(); | |
| 271 view->SetLoginTextfieldFocus(); | |
| 272 } | 292 } |
| 273 } | 293 } |
| 274 } else if (flags & FLAG_CELLULAR) { | 294 } else if (flags & FLAG_CELLULAR) { |
| 275 CellularNetwork cellular; | 295 CellularNetwork cellular; |
| 276 bool cellular_exists = cros->FindCellularNetworkByPath( | 296 bool cellular_exists = cros->FindCellularNetworkByPath( |
| 277 menu_items_[index].wireless_path, &cellular); | 297 menu_items_[index].wireless_path, &cellular); |
| 278 | 298 |
| 279 if (!cellular_exists) { | 299 if (!cellular_exists) { |
| 280 // If we are attempting to connect to a network that no longer exists, | 300 // If we are attempting to connect to a network that no longer exists, |
| 281 // display a notification. | 301 // display a notification. |
| 282 // TODO(stevenjb): Show notification. | 302 // TODO(stevenjb): Show notification. |
| 283 } else if (cellular.name() == cros->cellular_name()) { | 303 } else if (cellular.name() == cros->cellular_name()) { |
| 284 // If clicked on a network that we are already connected to or we are | 304 // If clicked on a network that we are already connected to or we are |
| 285 // currently trying to connect to, then open config dialog. | 305 // currently trying to connect to, then open config dialog. |
| 286 if (cros->cellular_connected()) { | 306 if (cros->cellular_connected()) { |
| 287 if (CommandLine::ForCurrentProcess()->HasSwitch( | 307 if (CommandLine::ForCurrentProcess()->HasSwitch( |
| 288 switches::kEnableTabbedOptions)) { | 308 switches::kEnableTabbedOptions)) { |
| 289 ShowTabbedNetworkSettings(cellular); | 309 ShowTabbedNetworkSettings(cellular); |
| 290 } else { | 310 } else { |
| 291 NetworkConfigView* view = new NetworkConfigView(cellular); | 311 ShowNetworkConfigView(new NetworkConfigView(cellular), false); |
| 292 view->set_browser_mode(IsBrowserMode()); | |
| 293 views::Window* window = browser::CreateViewsWindow( | |
| 294 GetNativeWindow(), gfx::Rect(), view); | |
| 295 window->SetIsAlwaysOnTop(true); | |
| 296 window->Show(); | |
| 297 } | 312 } |
| 298 } else { | 313 } else { |
| 299 // TODO(stevenjb): Connection in progress. Show dialog? | 314 // TODO(stevenjb): Connection in progress. Show dialog? |
| 300 } | 315 } |
| 301 } else { | 316 } else { |
| 302 cros->ConnectToCellularNetwork(cellular); | 317 cros->ConnectToCellularNetwork(cellular); |
| 303 } | 318 } |
| 304 } | 319 } |
| 305 } | 320 } |
| 306 | 321 |
| 307 void NetworkMenu::SetFirstLevelMenuWidth(int width) { | 322 void NetworkMenu::SetFirstLevelMenuWidth(int width) { |
| 308 min_width_ = width; | 323 min_width_ = width; |
| 309 // This actually has no effect since menu is rebuilt before showing. | 324 // This actually has no effect since menu is rebuilt before showing. |
| 310 network_menu_->SetMinimumWidth(width); | 325 network_menu_->SetMinimumWidth(width); |
| 311 } | 326 } |
| 312 | 327 |
| 313 void NetworkMenu::CancelMenu() { | 328 void NetworkMenu::CancelMenu() { |
| 314 network_menu_->CancelMenu(); | 329 network_menu_->CancelMenu(); |
| 315 } | 330 } |
| 316 | 331 |
| 332 void NetworkMenu::UpdateMenu() { | |
| 333 refreshing_menu_ = true; | |
| 334 InitMenuItems(); | |
| 335 network_menu_->Rebuild(); | |
| 336 refreshing_menu_ = false; | |
| 337 } | |
| 338 | |
| 317 // static | 339 // static |
| 318 SkBitmap NetworkMenu::IconForNetworkStrength(int strength, bool black) { | 340 SkBitmap NetworkMenu::IconForNetworkStrength(int strength, bool black) { |
| 319 // Compose wifi icon by superimposing various icons. | 341 // Compose wifi icon by superimposing various icons. |
| 320 // NOTE: Use an array rather than just calculating a resource number to avoid | 342 // NOTE: Use an array rather than just calculating a resource number to avoid |
| 321 // creating implicit ordering dependencies on the resource values. | 343 // creating implicit ordering dependencies on the resource values. |
| 322 static const int kBarsImages[kNumWifiImages] = { | 344 static const int kBarsImages[kNumWifiImages] = { |
| 323 IDR_STATUSBAR_NETWORK_BARS1, | 345 IDR_STATUSBAR_NETWORK_BARS1, |
| 324 IDR_STATUSBAR_NETWORK_BARS2, | 346 IDR_STATUSBAR_NETWORK_BARS2, |
| 325 IDR_STATUSBAR_NETWORK_BARS3, | 347 IDR_STATUSBAR_NETWORK_BARS3, |
| 326 IDR_STATUSBAR_NETWORK_BARS4, | 348 IDR_STATUSBAR_NETWORK_BARS4, |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 371 //////////////////////////////////////////////////////////////////////////////// | 393 //////////////////////////////////////////////////////////////////////////////// |
| 372 // NetworkMenu, views::ViewMenuDelegate implementation: | 394 // NetworkMenu, views::ViewMenuDelegate implementation: |
| 373 | 395 |
| 374 void NetworkMenu::RunMenu(views::View* source, const gfx::Point& pt) { | 396 void NetworkMenu::RunMenu(views::View* source, const gfx::Point& pt) { |
| 375 refreshing_menu_ = true; | 397 refreshing_menu_ = true; |
| 376 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | 398 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
| 377 cros->RequestWifiScan(); | 399 cros->RequestWifiScan(); |
| 378 cros->UpdateSystemInfo(); | 400 cros->UpdateSystemInfo(); |
| 379 InitMenuItems(); | 401 InitMenuItems(); |
| 380 network_menu_->Rebuild(); | 402 network_menu_->Rebuild(); |
| 381 network_menu_->UpdateStates(); | |
| 382 // Restore menu width, if it was set up. | 403 // Restore menu width, if it was set up. |
| 383 // NOTE: width isn't checked for correctness here since all width-related | 404 // NOTE: width isn't checked for correctness here since all width-related |
| 384 // logic implemented inside |network_menu_|. | 405 // logic implemented inside |network_menu_|. |
| 385 if (min_width_ != -1) | 406 if (min_width_ != -1) |
| 386 network_menu_->SetMinimumWidth(min_width_); | 407 network_menu_->SetMinimumWidth(min_width_); |
| 387 refreshing_menu_ = false; | 408 refreshing_menu_ = false; |
| 388 network_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); | 409 network_menu_->RunMenuAt(pt, views::Menu2::ALIGN_TOPRIGHT); |
| 389 } | 410 } |
| 390 | 411 |
| 391 void NetworkMenu::InitMenuItems() { | 412 void NetworkMenu::InitMenuItems() { |
| 413 // This gets called on initialization, so any changes should be reflected | |
| 414 // in CrosMock::SetNetworkLibraryStatusAreaExpectations(). | |
| 415 | |
| 392 menu_items_.clear(); | 416 menu_items_.clear(); |
| 393 // Populate our MenuItems with the current list of wifi networks. | 417 // Populate our MenuItems with the current list of wifi networks. |
| 394 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | 418 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
| 395 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); | 419 ResourceBundle& rb = ResourceBundle::GetSharedInstance(); |
| 396 | 420 |
| 397 // Ethernet | 421 // Ethernet |
| 422 bool ethernet_connected = cros->ethernet_connected(); | |
| 423 bool ethernet_connecting = cros->ethernet_connecting(); | |
| 398 string16 label = l10n_util::GetStringUTF16( | 424 string16 label = l10n_util::GetStringUTF16( |
| 399 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); | 425 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); |
| 400 SkBitmap icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK); | 426 SkBitmap icon = *rb.GetBitmapNamed(IDR_STATUSBAR_WIRED_BLACK); |
| 401 SkBitmap badge = cros->ethernet_connecting() || cros->ethernet_connected() ? | 427 SkBitmap badge = ethernet_connecting || ethernet_connected ? |
| 402 SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED); | 428 SkBitmap() : *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_DISCONNECTED); |
| 403 int flag = (cros->ethernet_connecting() || cros->ethernet_connected()) ? | 429 int flag = (ethernet_connecting || ethernet_connected) ? |
| 404 FLAG_ETHERNET | FLAG_ASSOCIATED : FLAG_ETHERNET; | 430 FLAG_ETHERNET | FLAG_ASSOCIATED : FLAG_ETHERNET; |
| 405 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 431 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
| 406 IconForDisplay(icon, badge), std::string(), flag)); | 432 IconForDisplay(icon, badge), std::string(), flag)); |
| 407 | 433 |
| 408 // Wifi | 434 // Wifi |
| 409 const WifiNetworkVector& wifi_networks = cros->wifi_networks(); | 435 const WifiNetworkVector& wifi_networks = cros->wifi_networks(); |
| 436 const std::string& active_wifi_name = cros->wifi_name(); | |
| 410 // Wifi networks ssids. | 437 // Wifi networks ssids. |
| 411 for (size_t i = 0; i < wifi_networks.size(); ++i) { | 438 for (size_t i = 0; i < wifi_networks.size(); ++i) { |
| 412 label = ASCIIToUTF16(wifi_networks[i].name()); | 439 label = ASCIIToUTF16(wifi_networks[i].name()); |
| 413 SkBitmap icon = IconForNetworkStrength(wifi_networks[i].strength(), true); | 440 SkBitmap icon = IconForNetworkStrength(wifi_networks[i].strength(), true); |
| 414 SkBitmap badge = wifi_networks[i].encrypted() ? | 441 SkBitmap badge = wifi_networks[i].encrypted() ? |
| 415 *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : SkBitmap(); | 442 *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_SECURE) : SkBitmap(); |
| 416 flag = (wifi_networks[i].name() == cros->wifi_name()) ? | 443 flag = (wifi_networks[i].name() == active_wifi_name) ? |
| 417 FLAG_WIFI | FLAG_ASSOCIATED : FLAG_WIFI; | 444 FLAG_WIFI | FLAG_ASSOCIATED : FLAG_WIFI; |
| 418 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 445 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
| 419 IconForDisplay(icon, badge), wifi_networks[i].service_path(), flag)); | 446 IconForDisplay(icon, badge), wifi_networks[i].service_path(), flag)); |
| 420 } | 447 } |
| 421 | 448 |
| 422 // Cellular | 449 // Cellular |
| 423 const CellularNetworkVector& cell_networks = cros->cellular_networks(); | 450 const CellularNetworkVector& cell_networks = cros->cellular_networks(); |
| 451 const std::string& active_cellular_name = cros->cellular_name(); | |
| 424 // Cellular networks ssids. | 452 // Cellular networks ssids. |
| 425 for (size_t i = 0; i < cell_networks.size(); ++i) { | 453 for (size_t i = 0; i < cell_networks.size(); ++i) { |
| 426 label = ASCIIToUTF16(cell_networks[i].name()); | 454 label = ASCIIToUTF16(cell_networks[i].name()); |
| 427 SkBitmap icon = IconForNetworkStrength(cell_networks[i].strength(), true); | 455 SkBitmap icon = IconForNetworkStrength(cell_networks[i].strength(), true); |
| 428 // TODO(chocobo): Check cellular network 3g/edge. | 456 // TODO(chocobo): Check cellular network 3g/edge. |
| 429 SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G); | 457 SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_3G); |
| 430 // SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE); | 458 // SkBitmap badge = *rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_EDGE); |
| 431 flag = (cell_networks[i].name() == cros->cellular_name()) ? | 459 flag = (cell_networks[i].name() == active_cellular_name) ? |
| 432 FLAG_CELLULAR | FLAG_ASSOCIATED : FLAG_CELLULAR; | 460 FLAG_CELLULAR | FLAG_ASSOCIATED : FLAG_CELLULAR; |
| 433 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 461 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
| 434 IconForDisplay(icon, badge), cell_networks[i].service_path(), flag)); | 462 IconForDisplay(icon, badge), cell_networks[i].service_path(), flag)); |
| 435 } | 463 } |
| 436 | 464 |
| 437 // No networks available message. | 465 // No networks available message. |
| 438 if (wifi_networks.empty() && cell_networks.empty()) { | 466 if (wifi_networks.empty() && cell_networks.empty()) { |
| 439 label = l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT, | 467 label = l10n_util::GetStringFUTF16(IDS_STATUSBAR_NETWORK_MENU_ITEM_INDENT, |
| 440 l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE)); | 468 l10n_util::GetStringUTF16(IDS_STATUSBAR_NO_NETWORKS_MESSAGE)); |
| 441 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 469 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
| 442 SkBitmap(), std::string(), FLAG_DISABLED)); | 470 SkBitmap(), std::string(), FLAG_DISABLED)); |
| 443 } | 471 } |
| 444 | 472 |
| 445 // Other networks | 473 // Other networks |
| 446 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, | 474 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, |
| 447 l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS), | 475 l10n_util::GetStringUTF16(IDS_OPTIONS_SETTINGS_OTHER_NETWORKS), |
| 448 IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), | 476 IconForDisplay(*rb.GetBitmapNamed(IDR_STATUSBAR_NETWORK_BARS0), |
| 449 SkBitmap()), | 477 SkBitmap()), |
| 450 std::string(), FLAG_OTHER_NETWORK)); | 478 std::string(), FLAG_OTHER_NETWORK)); |
| 451 | 479 |
| 452 if (cros->wifi_available() || cros->cellular_available()) { | 480 bool wifi_available = cros->wifi_available(); |
| 481 bool cellular_available = cros->cellular_available(); | |
| 482 if (wifi_available || cellular_available) { | |
| 453 // Separator. | 483 // Separator. |
| 454 menu_items_.push_back(MenuItem()); | 484 menu_items_.push_back(MenuItem()); |
| 455 | 485 |
| 456 // Turn Wifi Off. (only if wifi available) | 486 // Turn Wifi Off. (only if wifi available) |
| 457 if (cros->wifi_available()) { | 487 if (wifi_available) { |
| 458 int id = cros->wifi_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : | 488 int id = cros->wifi_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : |
| 459 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; | 489 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; |
| 460 label = l10n_util::GetStringFUTF16(id, | 490 label = l10n_util::GetStringFUTF16(id, |
| 461 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)); | 491 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_WIFI)); |
| 462 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 492 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
| 463 SkBitmap(), std::string(), FLAG_TOGGLE_WIFI)); | 493 SkBitmap(), std::string(), FLAG_TOGGLE_WIFI)); |
| 464 } | 494 } |
| 465 | 495 |
| 466 // Turn Cellular Off. (only if cellular available) | 496 // Turn Cellular Off. (only if cellular available) |
| 467 if (cros->cellular_available()) { | 497 if (cellular_available) { |
| 468 int id = cros->cellular_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : | 498 int id = cros->cellular_enabled() ? IDS_STATUSBAR_NETWORK_DEVICE_DISABLE : |
| 469 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; | 499 IDS_STATUSBAR_NETWORK_DEVICE_ENABLE; |
| 470 label = l10n_util::GetStringFUTF16(id, | 500 label = l10n_util::GetStringFUTF16(id, |
| 471 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)); | 501 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CELLULAR)); |
| 472 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 502 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
| 473 SkBitmap(), std::string(), FLAG_TOGGLE_CELLULAR)); | 503 SkBitmap(), std::string(), FLAG_TOGGLE_CELLULAR)); |
| 474 } | 504 } |
| 475 } | 505 } |
| 476 | 506 |
| 477 // TODO(chocobo): Uncomment once we figure out how to do offline mode. | 507 // TODO(chocobo): Uncomment once we figure out how to do offline mode. |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 488 // Network settings. | 518 // Network settings. |
| 489 if (ShouldOpenButtonOptions()) { | 519 if (ShouldOpenButtonOptions()) { |
| 490 label = | 520 label = |
| 491 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG); | 521 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_OPEN_OPTIONS_DIALOG); |
| 492 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, | 522 menu_items_.push_back(MenuItem(menus::MenuModel::TYPE_COMMAND, label, |
| 493 SkBitmap(), std::string(), FLAG_OPTIONS)); | 523 SkBitmap(), std::string(), FLAG_OPTIONS)); |
| 494 } | 524 } |
| 495 } | 525 } |
| 496 } | 526 } |
| 497 | 527 |
| 528 void NetworkMenu::ShowTabbedNetworkSettings(const Network& network) { | |
| 529 Browser* browser = BrowserList::GetLastActive(); | |
| 530 if (!browser) | |
| 531 return; | |
| 532 std::string page = StringPrintf("%s?servicePath=%s&networkType=%d", | |
| 533 chrome::kInternetOptionsSubPage, | |
| 534 EscapeUrlEncodedData(network.service_path()).c_str(), | |
| 535 network.type()); | |
| 536 browser->ShowOptionsTab(page); | |
| 537 } | |
| 538 | |
| 539 // TODO(stevenjb): deprecate this once all of the UI is embedded in the menu. | |
| 540 void NetworkMenu::ShowNetworkConfigView(NetworkConfigView* view, | |
| 541 bool focus_login) const { | |
| 542 view->set_browser_mode(IsBrowserMode()); | |
| 543 views::Window* window = browser::CreateViewsWindow( | |
| 544 GetNativeWindow(), gfx::Rect(), view); | |
| 545 window->SetIsAlwaysOnTop(true); | |
| 546 window->Show(); | |
| 547 if (focus_login) | |
| 548 view->SetLoginTextfieldFocus(); | |
| 549 } | |
| 550 | |
| 498 } // namespace chromeos | 551 } // namespace chromeos |
| OLD | NEW |