OLD | NEW |
(Empty) | |
| 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 |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "chrome/browser/chromeos/dom_ui/network_menu_ui.h" |
| 6 |
| 7 #include "base/values.h" |
| 8 #include "base/string_util.h" |
| 9 #include "chrome/app/chrome_dll_resource.h" |
| 10 #include "chrome/browser/chromeos/status/network_menu.h" |
| 11 #include "chrome/browser/chromeos/views/native_menu_domui.h" |
| 12 #include "chrome/common/url_constants.h" |
| 13 #include "googleurl/src/gurl.h" |
| 14 #include "grit/browser_resources.h" |
| 15 #include "views/controls/menu/menu_2.h" |
| 16 |
| 17 namespace { |
| 18 |
| 19 //////////////////////////////////////////////////////////////////////////////// |
| 20 // |
| 21 // MenuHandler |
| 22 // |
| 23 //////////////////////////////////////////////////////////////////////////////// |
| 24 |
| 25 // The handler for Javascript messages related to the "system" view. |
| 26 class NetworkMenuHandler : public chromeos::MenuHandlerBase, |
| 27 public base::SupportsWeakPtr<NetworkMenuHandler> { |
| 28 public: |
| 29 NetworkMenuHandler(); |
| 30 virtual ~NetworkMenuHandler(); |
| 31 |
| 32 // DOMMessageHandler implementation. |
| 33 virtual void RegisterMessages(); |
| 34 |
| 35 private: |
| 36 void HandleAction(const ListValue* values); |
| 37 |
| 38 DISALLOW_COPY_AND_ASSIGN(NetworkMenuHandler); |
| 39 }; |
| 40 |
| 41 void NetworkMenuHandler::RegisterMessages() { |
| 42 dom_ui_->RegisterMessageCallback( |
| 43 "action", |
| 44 NewCallback(this, |
| 45 &NetworkMenuHandler::HandleAction)); |
| 46 } |
| 47 |
| 48 void NetworkMenuHandler::HandleAction(const ListValue* values) { |
| 49 menus::MenuModel* model = GetMenuModel(); |
| 50 if (model) |
| 51 static_cast<chromeos::NetworkMenuUI*>(dom_ui_)->ModelAction(model, values); |
| 52 } |
| 53 |
| 54 NetworkMenuHandler::NetworkMenuHandler() { |
| 55 } |
| 56 |
| 57 NetworkMenuHandler::~NetworkMenuHandler() { |
| 58 } |
| 59 |
| 60 } // namespace |
| 61 |
| 62 namespace chromeos { |
| 63 |
| 64 //////////////////////////////////////////////////////////////////////////////// |
| 65 // |
| 66 // NetworkMenuUI |
| 67 // |
| 68 //////////////////////////////////////////////////////////////////////////////// |
| 69 |
| 70 NetworkMenuUI::NetworkMenuUI(TabContents* contents) |
| 71 : chromeos::MenuUI( |
| 72 contents, |
| 73 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 74 CreateMenuUIHTMLSource(*this, |
| 75 chrome::kChromeUINetworkMenu, |
| 76 "NetworkMenu", |
| 77 IDR_NETWORK_MENU_JS, |
| 78 -1))) { |
| 79 NetworkMenuHandler* handler = new NetworkMenuHandler(); |
| 80 AddMessageHandler((handler)->Attach(this)); |
| 81 } |
| 82 |
| 83 void NetworkMenuUI::AddCustomConfigValues(DictionaryValue* config) const { |
| 84 } |
| 85 |
| 86 void NetworkMenuUI::ModelAction(const menus::MenuModel* model, |
| 87 const ListValue* values) { |
| 88 //const NetworkMenu* network_menu = static_cast<const NetworkMenu*>(model); |
| 89 // Invoke model methods here. |
| 90 } |
| 91 |
| 92 DictionaryValue* NetworkMenuUI::CreateMenuItem(const menus::MenuModel* model, |
| 93 int index, |
| 94 const char* type, |
| 95 int* max_icon_width, |
| 96 bool* has_accel) const { |
| 97 // Create a MenuUI menu item, then append network specific values. |
| 98 DictionaryValue* item = MenuUI::CreateMenuItem(model, |
| 99 index, |
| 100 type, |
| 101 max_icon_width, |
| 102 has_accel); |
| 103 // Network menu specific values. |
| 104 const NetworkMenu* network_menu = static_cast<const NetworkMenu*>(model); |
| 105 NetworkMenu::NetworkInfo info; |
| 106 bool found = network_menu->GetNetworkAt(index, &info); |
| 107 |
| 108 item->SetBoolean("visible", found); |
| 109 item->SetString("network_type", info.network_type); |
| 110 item->SetString("status", info.status); |
| 111 item->SetString("message", info.message); |
| 112 item->SetString("ip_address", info.ip_address); |
| 113 item->SetBoolean("need_passphrase", info.need_passphrase); |
| 114 item->SetBoolean("remembered", info.remembered); |
| 115 return item; |
| 116 } |
| 117 |
| 118 views::Menu2* NetworkMenuUI::CreateMenu2(menus::MenuModel* model) { |
| 119 views::Menu2* menu = new views::Menu2(model); |
| 120 NativeMenuDOMUI::SetMenuURL( |
| 121 menu, GURL(StringPrintf("chrome://%s", chrome::kChromeUINetworkMenu))); |
| 122 return menu; |
| 123 } |
| 124 |
| 125 } // namespace chromeos |
OLD | NEW |