| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
| 10 #include "ash/shell_delegate.h" | 10 #include "ash/shell_delegate.h" |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 69 } // namespace | 69 } // namespace |
| 70 | 70 |
| 71 class NetworkMenuModel : public ui::MenuModel { | 71 class NetworkMenuModel : public ui::MenuModel { |
| 72 public: | 72 public: |
| 73 struct MenuItem { | 73 struct MenuItem { |
| 74 MenuItem() | 74 MenuItem() |
| 75 : type(ui::MenuModel::TYPE_SEPARATOR), | 75 : type(ui::MenuModel::TYPE_SEPARATOR), |
| 76 sub_menu_model(NULL), | 76 sub_menu_model(NULL), |
| 77 flags(0) { | 77 flags(0) { |
| 78 } | 78 } |
| 79 MenuItem(ui::MenuModel::ItemType type, string16 label, gfx::ImageSkia icon, | 79 MenuItem(ui::MenuModel::ItemType type, base::string16 label, gfx::ImageSkia
icon, |
| 80 const std::string& service_path, int flags) | 80 const std::string& service_path, int flags) |
| 81 : type(type), | 81 : type(type), |
| 82 label(label), | 82 label(label), |
| 83 icon(icon), | 83 icon(icon), |
| 84 service_path(service_path), | 84 service_path(service_path), |
| 85 sub_menu_model(NULL), | 85 sub_menu_model(NULL), |
| 86 flags(flags) { | 86 flags(flags) { |
| 87 } | 87 } |
| 88 MenuItem(ui::MenuModel::ItemType type, string16 label, gfx::ImageSkia icon, | 88 MenuItem(ui::MenuModel::ItemType type, base::string16 label, gfx::ImageSkia
icon, |
| 89 NetworkMenuModel* sub_menu_model, int flags) | 89 NetworkMenuModel* sub_menu_model, int flags) |
| 90 : type(type), | 90 : type(type), |
| 91 label(label), | 91 label(label), |
| 92 icon(icon), | 92 icon(icon), |
| 93 sub_menu_model(sub_menu_model), | 93 sub_menu_model(sub_menu_model), |
| 94 flags(flags) { | 94 flags(flags) { |
| 95 } | 95 } |
| 96 | 96 |
| 97 ui::MenuModel::ItemType type; | 97 ui::MenuModel::ItemType type; |
| 98 string16 label; | 98 base::string16 label; |
| 99 gfx::ImageSkia icon; | 99 gfx::ImageSkia icon; |
| 100 std::string service_path; | 100 std::string service_path; |
| 101 NetworkMenuModel* sub_menu_model; // Weak ptr. | 101 NetworkMenuModel* sub_menu_model; // Weak ptr. |
| 102 int flags; | 102 int flags; |
| 103 }; | 103 }; |
| 104 typedef std::vector<MenuItem> MenuItemVector; | 104 typedef std::vector<MenuItem> MenuItemVector; |
| 105 | 105 |
| 106 explicit NetworkMenuModel(const base::WeakPtr<NetworkMenu>& owner) | 106 explicit NetworkMenuModel(const base::WeakPtr<NetworkMenu>& owner) |
| 107 : owner_(owner) {} | 107 : owner_(owner) {} |
| 108 virtual ~NetworkMenuModel() {} | 108 virtual ~NetworkMenuModel() {} |
| 109 | 109 |
| 110 // Connect or reconnect to the network at |index|. | 110 // Connect or reconnect to the network at |index|. |
| 111 void ConnectToNetworkAt(int index); | 111 void ConnectToNetworkAt(int index); |
| 112 | 112 |
| 113 // Called by NetworkMenu::UpdateMenu to initialize menu items. | 113 // Called by NetworkMenu::UpdateMenu to initialize menu items. |
| 114 virtual void InitMenuItems(bool should_open_button_options) = 0; | 114 virtual void InitMenuItems(bool should_open_button_options) = 0; |
| 115 | 115 |
| 116 // Menu item field accessors. | 116 // Menu item field accessors. |
| 117 const MenuItemVector& menu_items() const { return menu_items_; } | 117 const MenuItemVector& menu_items() const { return menu_items_; } |
| 118 | 118 |
| 119 // ui::MenuModel implementation | 119 // ui::MenuModel implementation |
| 120 // GetCommandIdAt() must be implemented by subclasses. | 120 // GetCommandIdAt() must be implemented by subclasses. |
| 121 virtual bool HasIcons() const OVERRIDE; | 121 virtual bool HasIcons() const OVERRIDE; |
| 122 virtual int GetItemCount() const OVERRIDE; | 122 virtual int GetItemCount() const OVERRIDE; |
| 123 virtual ui::MenuModel::ItemType GetTypeAt(int index) const OVERRIDE; | 123 virtual ui::MenuModel::ItemType GetTypeAt(int index) const OVERRIDE; |
| 124 virtual ui::MenuSeparatorType GetSeparatorTypeAt(int index) const OVERRIDE; | 124 virtual ui::MenuSeparatorType GetSeparatorTypeAt(int index) const OVERRIDE; |
| 125 virtual string16 GetLabelAt(int index) const OVERRIDE; | 125 virtual base::string16 GetLabelAt(int index) const OVERRIDE; |
| 126 virtual bool IsItemDynamicAt(int index) const OVERRIDE; | 126 virtual bool IsItemDynamicAt(int index) const OVERRIDE; |
| 127 virtual const gfx::Font* GetLabelFontAt(int index) const OVERRIDE; | 127 virtual const gfx::Font* GetLabelFontAt(int index) const OVERRIDE; |
| 128 virtual bool GetAcceleratorAt(int index, | 128 virtual bool GetAcceleratorAt(int index, |
| 129 ui::Accelerator* accelerator) const OVERRIDE; | 129 ui::Accelerator* accelerator) const OVERRIDE; |
| 130 virtual bool IsItemCheckedAt(int index) const OVERRIDE; | 130 virtual bool IsItemCheckedAt(int index) const OVERRIDE; |
| 131 virtual int GetGroupIdAt(int index) const OVERRIDE; | 131 virtual int GetGroupIdAt(int index) const OVERRIDE; |
| 132 virtual bool GetIconAt(int index, gfx::Image* icon) OVERRIDE; | 132 virtual bool GetIconAt(int index, gfx::Image* icon) OVERRIDE; |
| 133 virtual ui::ButtonMenuItemModel* GetButtonMenuItemAt( | 133 virtual ui::ButtonMenuItemModel* GetButtonMenuItemAt( |
| 134 int index) const OVERRIDE; | 134 int index) const OVERRIDE; |
| 135 virtual bool IsEnabledAt(int index) const OVERRIDE; | 135 virtual bool IsEnabledAt(int index) const OVERRIDE; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 virtual ~MainMenuModel() {} | 194 virtual ~MainMenuModel() {} |
| 195 | 195 |
| 196 // NetworkMenuModel implementation. | 196 // NetworkMenuModel implementation. |
| 197 virtual void InitMenuItems(bool should_open_button_options) OVERRIDE; | 197 virtual void InitMenuItems(bool should_open_button_options) OVERRIDE; |
| 198 | 198 |
| 199 // ui::MenuModel implementation | 199 // ui::MenuModel implementation |
| 200 virtual int GetCommandIdAt(int index) const OVERRIDE; | 200 virtual int GetCommandIdAt(int index) const OVERRIDE; |
| 201 | 201 |
| 202 private: | 202 private: |
| 203 void AddWirelessNetworkMenuItem(const NetworkState* wifi_network, int flag); | 203 void AddWirelessNetworkMenuItem(const NetworkState* wifi_network, int flag); |
| 204 void AddMessageItem(const string16& msg); | 204 void AddMessageItem(const base::string16& msg); |
| 205 | 205 |
| 206 scoped_ptr<MoreMenuModel> more_menu_model_; | 206 scoped_ptr<MoreMenuModel> more_menu_model_; |
| 207 | 207 |
| 208 DISALLOW_COPY_AND_ASSIGN(MainMenuModel); | 208 DISALLOW_COPY_AND_ASSIGN(MainMenuModel); |
| 209 }; | 209 }; |
| 210 | 210 |
| 211 //////////////////////////////////////////////////////////////////////////////// | 211 //////////////////////////////////////////////////////////////////////////////// |
| 212 // NetworkMenuModel, public methods: | 212 // NetworkMenuModel, public methods: |
| 213 | 213 |
| 214 void NetworkMenuModel::ConnectToNetworkAt(int index) { | 214 void NetworkMenuModel::ConnectToNetworkAt(int index) { |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 339 ChooseMobileNetworkDialog::ShowDialog(native_window); | 339 ChooseMobileNetworkDialog::ShowDialog(native_window); |
| 340 else | 340 else |
| 341 NetworkConfigView::ShowForType(shill::kTypeWifi, native_window); | 341 NetworkConfigView::ShowForType(shill::kTypeWifi, native_window); |
| 342 } | 342 } |
| 343 | 343 |
| 344 //////////////////////////////////////////////////////////////////////////////// | 344 //////////////////////////////////////////////////////////////////////////////// |
| 345 // MainMenuModel | 345 // MainMenuModel |
| 346 | 346 |
| 347 void MainMenuModel::AddWirelessNetworkMenuItem(const NetworkState* network, | 347 void MainMenuModel::AddWirelessNetworkMenuItem(const NetworkState* network, |
| 348 int flag) { | 348 int flag) { |
| 349 string16 label; | 349 base::string16 label; |
| 350 // Ampersand is a valid character in an SSID, but menu2 uses it to mark | 350 // Ampersand is a valid character in an SSID, but menu2 uses it to mark |
| 351 // "mnemonics" for keyboard shortcuts. | 351 // "mnemonics" for keyboard shortcuts. |
| 352 std::string wifi_name = EscapeAmpersands(network->name()); | 352 std::string wifi_name = EscapeAmpersands(network->name()); |
| 353 if (network->IsConnectingState()) { | 353 if (network->IsConnectingState()) { |
| 354 label = l10n_util::GetStringFUTF16( | 354 label = l10n_util::GetStringFUTF16( |
| 355 IDS_STATUSBAR_NETWORK_DEVICE_STATUS, | 355 IDS_STATUSBAR_NETWORK_DEVICE_STATUS, |
| 356 UTF8ToUTF16(wifi_name), | 356 UTF8ToUTF16(wifi_name), |
| 357 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING)); | 357 l10n_util::GetStringUTF16(IDS_STATUSBAR_NETWORK_DEVICE_CONNECTING)); |
| 358 } else { | 358 } else { |
| 359 label = UTF8ToUTF16(wifi_name); | 359 label = UTF8ToUTF16(wifi_name); |
| 360 } | 360 } |
| 361 | 361 |
| 362 // We do not have convenient access to whether or not it might be possible | 362 // We do not have convenient access to whether or not it might be possible |
| 363 // to connect to a wireless network (e.g. whether certs are required), so all | 363 // to connect to a wireless network (e.g. whether certs are required), so all |
| 364 // entries are enabled. | 364 // entries are enabled. |
| 365 | 365 |
| 366 if (ShouldHighlightNetwork(network)) | 366 if (ShouldHighlightNetwork(network)) |
| 367 flag |= FLAG_ASSOCIATED; | 367 flag |= FLAG_ASSOCIATED; |
| 368 const gfx::ImageSkia icon = ash::network_icon::GetImageForNetwork( | 368 const gfx::ImageSkia icon = ash::network_icon::GetImageForNetwork( |
| 369 network, ash::network_icon::ICON_TYPE_LIST); | 369 network, ash::network_icon::ICON_TYPE_LIST); |
| 370 menu_items_.push_back( | 370 menu_items_.push_back( |
| 371 MenuItem(ui::MenuModel::TYPE_COMMAND, | 371 MenuItem(ui::MenuModel::TYPE_COMMAND, |
| 372 label, icon, network->path(), flag)); | 372 label, icon, network->path(), flag)); |
| 373 } | 373 } |
| 374 | 374 |
| 375 void MainMenuModel::AddMessageItem(const string16& msg) { | 375 void MainMenuModel::AddMessageItem(const base::string16& msg) { |
| 376 menu_items_.push_back(MenuItem( | 376 menu_items_.push_back(MenuItem( |
| 377 ui::MenuModel::TYPE_COMMAND, msg, | 377 ui::MenuModel::TYPE_COMMAND, msg, |
| 378 gfx::ImageSkia(), std::string(), FLAG_DISABLED)); | 378 gfx::ImageSkia(), std::string(), FLAG_DISABLED)); |
| 379 } | 379 } |
| 380 | 380 |
| 381 void MainMenuModel::InitMenuItems(bool should_open_button_options) { | 381 void MainMenuModel::InitMenuItems(bool should_open_button_options) { |
| 382 menu_items_.clear(); | 382 menu_items_.clear(); |
| 383 | 383 |
| 384 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler(); | 384 NetworkStateHandler* handler = NetworkHandler::Get()->network_state_handler(); |
| 385 | 385 |
| 386 // Populate our MenuItems with the current list of networks. | 386 // Populate our MenuItems with the current list of networks. |
| 387 string16 label; | 387 base::string16 label; |
| 388 | 388 |
| 389 // Ethernet | 389 // Ethernet |
| 390 // Only display an ethernet icon if enabled, and an ethernet network exists. | 390 // Only display an ethernet icon if enabled, and an ethernet network exists. |
| 391 bool ethernet_enabled = | 391 bool ethernet_enabled = |
| 392 handler->IsTechnologyEnabled(NetworkTypePattern::Ethernet()); | 392 handler->IsTechnologyEnabled(NetworkTypePattern::Ethernet()); |
| 393 const NetworkState* ethernet_network = | 393 const NetworkState* ethernet_network = |
| 394 handler->FirstNetworkByType(NetworkTypePattern::Ethernet()); | 394 handler->FirstNetworkByType(NetworkTypePattern::Ethernet()); |
| 395 if (ethernet_enabled && ethernet_network) { | 395 if (ethernet_enabled && ethernet_network) { |
| 396 bool ethernet_connecting = ethernet_network->IsConnectingState(); | 396 bool ethernet_connecting = ethernet_network->IsConnectingState(); |
| 397 if (ethernet_connecting) { | 397 if (ethernet_connecting) { |
| (...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 return main_menu_model_.get(); | 674 return main_menu_model_.get(); |
| 675 } | 675 } |
| 676 | 676 |
| 677 void NetworkMenu::UpdateMenu() { | 677 void NetworkMenu::UpdateMenu() { |
| 678 refreshing_menu_ = true; | 678 refreshing_menu_ = true; |
| 679 main_menu_model_->InitMenuItems(delegate_->ShouldOpenButtonOptions()); | 679 main_menu_model_->InitMenuItems(delegate_->ShouldOpenButtonOptions()); |
| 680 refreshing_menu_ = false; | 680 refreshing_menu_ = false; |
| 681 } | 681 } |
| 682 | 682 |
| 683 } // namespace chromeos | 683 } // namespace chromeos |
| OLD | NEW |