Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(287)

Side by Side Diff: chrome/browser/chromeos/status/network_menu.cc

Issue 3678006: Implement action interface in network_menu.js for 'connect'. (Closed)
Patch Set: Set status for non connected networks. Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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
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
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
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
OLDNEW
« no previous file with comments | « chrome/browser/chromeos/status/network_menu.h ('k') | chrome/browser/chromeos/status/network_menu_button.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698