OLD | NEW |
---|---|
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 19 matching lines...) Expand all Loading... | |
30 #include "grit/theme_resources.h" | 30 #include "grit/theme_resources.h" |
31 #include "net/base/escape.h" | 31 #include "net/base/escape.h" |
32 #include "third_party/skia/include/core/SkBitmap.h" | 32 #include "third_party/skia/include/core/SkBitmap.h" |
33 #include "ui/base/l10n/l10n_util.h" | 33 #include "ui/base/l10n/l10n_util.h" |
34 #include "ui/base/models/menu_model.h" | 34 #include "ui/base/models/menu_model.h" |
35 #include "ui/base/resource/resource_bundle.h" | 35 #include "ui/base/resource/resource_bundle.h" |
36 #include "ui/gfx/canvas_skia.h" | 36 #include "ui/gfx/canvas_skia.h" |
37 #include "ui/gfx/skbitmap_operations.h" | 37 #include "ui/gfx/skbitmap_operations.h" |
38 #include "views/controls/menu/menu_item_view.h" | 38 #include "views/controls/menu/menu_item_view.h" |
39 #include "views/controls/menu/menu_model_adapter.h" | 39 #include "views/controls/menu/menu_model_adapter.h" |
40 #include "views/controls/menu/menu_runner.h" | |
40 #include "views/controls/menu/submenu_view.h" | 41 #include "views/controls/menu/submenu_view.h" |
41 #include "views/widget/widget.h" | 42 #include "views/widget/widget.h" |
42 | 43 |
43 namespace { | 44 namespace { |
44 | 45 |
45 // Offsets for views menu ids (main menu and submenu ids use the same | 46 // Offsets for views menu ids (main menu and submenu ids use the same |
46 // namespace). | 47 // namespace). |
47 const int kMainIndexMask = 0x1000; | 48 const int kMainIndexMask = 0x1000; |
48 const int kVPNIndexMask = 0x2000; | 49 const int kVPNIndexMask = 0x2000; |
49 const int kMoreIndexMask = 0x4000; | 50 const int kMoreIndexMask = 0x4000; |
(...skipping 972 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1022 return index + kMoreIndexMask; | 1023 return index + kMoreIndexMask; |
1023 } | 1024 } |
1024 | 1025 |
1025 //////////////////////////////////////////////////////////////////////////////// | 1026 //////////////////////////////////////////////////////////////////////////////// |
1026 // NetworkMenu | 1027 // NetworkMenu |
1027 | 1028 |
1028 NetworkMenu::NetworkMenu(Delegate* delegate, bool is_browser_mode) | 1029 NetworkMenu::NetworkMenu(Delegate* delegate, bool is_browser_mode) |
1029 : delegate_(delegate), | 1030 : delegate_(delegate), |
1030 is_browser_mode_(is_browser_mode), | 1031 is_browser_mode_(is_browser_mode), |
1031 refreshing_menu_(false), | 1032 refreshing_menu_(false), |
1033 menu_item_view_(NULL), | |
1032 min_width_(kDefaultMinimumWidth) { | 1034 min_width_(kDefaultMinimumWidth) { |
1033 main_menu_model_.reset(new MainMenuModel(this)); | 1035 main_menu_model_.reset(new MainMenuModel(this)); |
1034 menu_model_adapter_.reset( | 1036 menu_model_adapter_.reset( |
1035 new views::MenuModelAdapter(main_menu_model_.get())); | 1037 new views::MenuModelAdapter(main_menu_model_.get())); |
1036 menu_item_view_.reset(new views::MenuItemView(menu_model_adapter_.get())); | 1038 menu_item_view_ = new views::MenuItemView(menu_model_adapter_.get()); |
1037 menu_item_view_->set_has_icons(true); | 1039 menu_item_view_->set_has_icons(true); |
1038 menu_item_view_->set_menu_position( | 1040 menu_item_view_->set_menu_position( |
1039 views::MenuItemView::POSITION_BELOW_BOUNDS); | 1041 views::MenuItemView::POSITION_BELOW_BOUNDS); |
1040 } | 1042 } |
1041 | 1043 |
1042 NetworkMenu::~NetworkMenu() { | 1044 NetworkMenu::~NetworkMenu() { |
1043 } | 1045 } |
1044 | 1046 |
1045 ui::MenuModel* NetworkMenu::GetMenuModel() { | 1047 ui::MenuModel* NetworkMenu::GetMenuModel() { |
1046 return main_menu_model_.get(); | 1048 return main_menu_model_.get(); |
1047 } | 1049 } |
1048 | 1050 |
1049 void NetworkMenu::CancelMenu() { | 1051 void NetworkMenu::CancelMenu() { |
1050 menu_item_view_->Cancel(); | 1052 menu_runner_->Cancel(); |
1051 } | 1053 } |
1052 | 1054 |
1053 void NetworkMenu::UpdateMenu() { | 1055 void NetworkMenu::UpdateMenu() { |
1054 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 1056 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
1055 | 1057 |
1056 refreshing_menu_ = true; | 1058 refreshing_menu_ = true; |
1057 main_menu_model_->InitMenuItems( | 1059 main_menu_model_->InitMenuItems( |
1058 is_browser_mode(), delegate_->ShouldOpenButtonOptions()); | 1060 is_browser_mode(), delegate_->ShouldOpenButtonOptions()); |
1059 | 1061 |
1060 menu_model_adapter_->BuildMenu(menu_item_view_.get()); | 1062 menu_model_adapter_->BuildMenu(menu_item_view_); |
1061 SetMenuMargins(menu_item_view_.get(), kTopMargin, kBottomMargin); | 1063 SetMenuMargins(menu_item_view_, kTopMargin, kBottomMargin); |
1062 menu_item_view_->ChildrenChanged(); | 1064 menu_item_view_->ChildrenChanged(); |
1063 | 1065 |
1064 refreshing_menu_ = false; | 1066 refreshing_menu_ = false; |
1065 } | 1067 } |
1066 | 1068 |
1067 void NetworkMenu::RunMenu(views::View* source) { | 1069 void NetworkMenu::RunMenu(views::View* source) { |
1068 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); | 1070 NetworkLibrary* cros = CrosLibrary::Get()->GetNetworkLibrary(); |
1069 cros->RequestNetworkScan(); | 1071 cros->RequestNetworkScan(); |
1070 | 1072 |
1071 UpdateMenu(); | 1073 UpdateMenu(); |
1072 | 1074 |
1073 gfx::Point screen_location; | 1075 gfx::Point screen_location; |
1074 views::View::ConvertPointToScreen(source, &screen_location); | 1076 views::View::ConvertPointToScreen(source, &screen_location); |
1075 gfx::Rect bounds(screen_location, source->size()); | 1077 gfx::Rect bounds(screen_location, source->size()); |
1076 menu_item_view_->GetSubmenu()->set_minimum_preferred_width(min_width_); | 1078 menu_item_view_->GetSubmenu()->set_minimum_preferred_width(min_width_); |
1077 menu_item_view_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), | 1079 if (menu_runner_->RunMenuAt(source->GetWidget()->GetTopLevelWidget(), |
Dmitry Polukhin
2011/08/25 09:01:45
It looks like menu_runner_ is not set to initializ
| |
1078 delegate_->GetMenuButton(), bounds, | 1080 delegate_->GetMenuButton(), bounds, views::MenuItemView::TOPRIGHT, |
1079 views::MenuItemView::TOPRIGHT, true); | 1081 views::MenuRunner::HAS_MNEMONICS) == views::MenuRunner::MENU_DELETED) |
1082 return; | |
1080 } | 1083 } |
1081 | 1084 |
1082 void NetworkMenu::ShowTabbedNetworkSettings(const Network* network) const { | 1085 void NetworkMenu::ShowTabbedNetworkSettings(const Network* network) const { |
1083 DCHECK(network); | 1086 DCHECK(network); |
1084 Browser* browser = BrowserList::GetLastActive(); | 1087 Browser* browser = BrowserList::GetLastActive(); |
1085 if (!browser) | 1088 if (!browser) |
1086 return; | 1089 return; |
1087 std::string network_name(network->name()); | 1090 std::string network_name(network->name()); |
1088 if (network_name.empty() && network->type() == chromeos::TYPE_ETHERNET) { | 1091 if (network_name.empty() && network->type() == chromeos::TYPE_ETHERNET) { |
1089 network_name = l10n_util::GetStringUTF8( | 1092 network_name = l10n_util::GetStringUTF8( |
1090 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); | 1093 IDS_STATUSBAR_NETWORK_DEVICE_ETHERNET); |
1091 } | 1094 } |
1092 std::string page = StringPrintf( | 1095 std::string page = StringPrintf( |
1093 "%s?servicePath=%s&networkType=%d&networkName=%s", | 1096 "%s?servicePath=%s&networkType=%d&networkName=%s", |
1094 chrome::kInternetOptionsSubPage, | 1097 chrome::kInternetOptionsSubPage, |
1095 EscapeUrlEncodedData(network->service_path(), true).c_str(), | 1098 EscapeUrlEncodedData(network->service_path(), true).c_str(), |
1096 network->type(), | 1099 network->type(), |
1097 EscapeUrlEncodedData(network_name, false).c_str()); | 1100 EscapeUrlEncodedData(network_name, false).c_str()); |
1098 browser->ShowOptionsTab(page); | 1101 browser->ShowOptionsTab(page); |
1099 } | 1102 } |
1100 | 1103 |
1101 } // namespace chromeos | 1104 } // namespace chromeos |
OLD | NEW |