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_button.h" | 5 #include "chrome/browser/chromeos/status/network_menu_button.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <limits> | 8 #include <limits> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/bind.h" | 11 #include "base/bind.h" |
12 #include "base/logging.h" | 12 #include "base/logging.h" |
13 #include "base/message_loop.h" | 13 #include "base/message_loop.h" |
14 #include "base/string_util.h" | 14 #include "base/string_util.h" |
15 #include "base/stringprintf.h" | 15 #include "base/stringprintf.h" |
16 #include "base/utf_string_conversions.h" | 16 #include "base/utf_string_conversions.h" |
17 #include "chrome/browser/browser_process.h" | 17 #include "chrome/browser/browser_process.h" |
18 #include "chrome/browser/chromeos/cros/cros_library.h" | 18 #include "chrome/browser/chromeos/cros/cros_library.h" |
19 #include "chrome/browser/chromeos/login/helper.h" | 19 #include "chrome/browser/chromeos/login/helper.h" |
20 #include "chrome/browser/chromeos/login/user_manager.h" | 20 #include "chrome/browser/chromeos/login/user_manager.h" |
21 #include "chrome/browser/chromeos/options/network_config_view.h" | 21 #include "chrome/browser/chromeos/options/network_config_view.h" |
22 #include "chrome/browser/chromeos/sim_dialog_delegate.h" | 22 #include "chrome/browser/chromeos/sim_dialog_delegate.h" |
23 #include "chrome/browser/chromeos/status/status_area_host.h" | 23 #include "chrome/browser/chromeos/view_ids.h" |
24 #include "chrome/browser/prefs/pref_service.h" | 24 #include "chrome/browser/prefs/pref_service.h" |
25 #include "chrome/browser/profiles/profile.h" | 25 #include "chrome/browser/profiles/profile.h" |
26 #include "chrome/browser/ui/browser.h" | 26 #include "chrome/browser/ui/browser.h" |
27 #include "chrome/browser/ui/browser_list.h" | 27 #include "chrome/browser/ui/browser_list.h" |
28 #include "chrome/common/pref_names.h" | 28 #include "chrome/common/pref_names.h" |
29 #include "grit/generated_resources.h" | 29 #include "grit/generated_resources.h" |
30 #include "grit/theme_resources.h" | 30 #include "grit/theme_resources.h" |
31 #include "ui/base/l10n/l10n_util.h" | 31 #include "ui/base/l10n/l10n_util.h" |
32 #include "ui/base/resource/resource_bundle.h" | 32 #include "ui/base/resource/resource_bundle.h" |
33 #include "views/widget/widget.h" | 33 #include "views/widget/widget.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
89 SetIntegerLocalPref(prefs::kCarrierDealPromoShown, value); | 89 SetIntegerLocalPref(prefs::kCarrierDealPromoShown, value); |
90 } | 90 } |
91 | 91 |
92 } // namespace | 92 } // namespace |
93 | 93 |
94 namespace chromeos { | 94 namespace chromeos { |
95 | 95 |
96 //////////////////////////////////////////////////////////////////////////////// | 96 //////////////////////////////////////////////////////////////////////////////// |
97 // NetworkMenuButton | 97 // NetworkMenuButton |
98 | 98 |
99 NetworkMenuButton::NetworkMenuButton(StatusAreaHost* host) | 99 NetworkMenuButton::NetworkMenuButton( |
100 : StatusAreaButton(host, this), | 100 StatusAreaButton::Delegate* delegate, |
| 101 StatusAreaViewChromeos::ScreenMode screen_mode) |
| 102 : StatusAreaButton(delegate, this), |
101 mobile_data_bubble_(NULL), | 103 mobile_data_bubble_(NULL), |
102 is_browser_mode_(false), | 104 is_browser_mode_(false), |
103 check_for_promo_(true), | 105 check_for_promo_(true), |
104 was_sim_locked_(false), | 106 was_sim_locked_(false), |
105 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { | 107 ALLOW_THIS_IN_INITIALIZER_LIST(weak_ptr_factory_(this)) { |
106 is_browser_mode_ = (host->GetScreenMode() == StatusAreaHost::kBrowserMode); | 108 set_id(VIEW_ID_STATUS_BUTTON_NETWORK_MENU); |
| 109 is_browser_mode_ = (screen_mode == StatusAreaViewChromeos::BROWSER_MODE); |
107 network_menu_.reset(new NetworkMenu(this, is_browser_mode_)); | 110 network_menu_.reset(new NetworkMenu(this, is_browser_mode_)); |
108 network_icon_.reset( | 111 network_icon_.reset( |
109 new NetworkMenuIcon(this, NetworkMenuIcon::MENU_MODE)); | 112 new NetworkMenuIcon(this, NetworkMenuIcon::MENU_MODE)); |
110 | 113 |
111 NetworkLibrary* network_library = CrosLibrary::Get()->GetNetworkLibrary(); | 114 NetworkLibrary* network_library = CrosLibrary::Get()->GetNetworkLibrary(); |
112 OnNetworkManagerChanged(network_library); | 115 OnNetworkManagerChanged(network_library); |
113 network_library->AddNetworkManagerObserver(this); | 116 network_library->AddNetworkManagerObserver(this); |
114 network_library->AddCellularDataPlanObserver(this); | 117 network_library->AddCellularDataPlanObserver(this); |
115 const NetworkDevice* cellular = network_library->FindCellularDevice(); | 118 const NetworkDevice* cellular = network_library->FindCellularDevice(); |
116 if (cellular) { | 119 if (cellular) { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 } | 190 } |
188 | 191 |
189 //////////////////////////////////////////////////////////////////////////////// | 192 //////////////////////////////////////////////////////////////////////////////// |
190 // NetworkMenuButton, NetworkMenu implementation: | 193 // NetworkMenuButton, NetworkMenu implementation: |
191 | 194 |
192 views::MenuButton* NetworkMenuButton::GetMenuButton() { | 195 views::MenuButton* NetworkMenuButton::GetMenuButton() { |
193 return this; | 196 return this; |
194 } | 197 } |
195 | 198 |
196 gfx::NativeWindow NetworkMenuButton::GetNativeWindow() const { | 199 gfx::NativeWindow NetworkMenuButton::GetNativeWindow() const { |
197 return host_->GetNativeWindow(); | 200 // This must always have a parent, which must have a widget ancestor. |
| 201 return parent()->GetWidget()->GetNativeWindow(); |
198 } | 202 } |
199 | 203 |
200 void NetworkMenuButton::OpenButtonOptions() { | 204 void NetworkMenuButton::OpenButtonOptions() { |
201 host_->OpenButtonOptions(this); | 205 delegate()->ExecuteStatusAreaCommand( |
| 206 this, StatusAreaViewChromeos::SHOW_NETWORK_OPTIONS); |
202 } | 207 } |
203 | 208 |
204 bool NetworkMenuButton::ShouldOpenButtonOptions() const { | 209 bool NetworkMenuButton::ShouldOpenButtonOptions() const { |
205 return host_->ShouldOpenButtonOptions(this); | 210 return delegate()->ShouldExecuteStatusAreaCommand( |
| 211 this, StatusAreaViewChromeos::SHOW_NETWORK_OPTIONS); |
206 } | 212 } |
207 | 213 |
208 //////////////////////////////////////////////////////////////////////////////// | 214 //////////////////////////////////////////////////////////////////////////////// |
209 // NetworkMenuButton, views::View implementation: | 215 // NetworkMenuButton, views::View implementation: |
210 | 216 |
211 void NetworkMenuButton::OnLocaleChanged() { | 217 void NetworkMenuButton::OnLocaleChanged() { |
212 SetNetworkIcon(); | 218 SetNetworkIcon(); |
213 network_menu_->UpdateMenu(); | 219 network_menu_->UpdateMenu(); |
214 } | 220 } |
215 | 221 |
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 SetCarrierDealPromoShown(carrier_deal_promo_pref + 1); | 442 SetCarrierDealPromoShown(carrier_deal_promo_pref + 1); |
437 } | 443 } |
438 } | 444 } |
439 | 445 |
440 void NetworkMenuButton::SetTooltipAndAccessibleName(const string16& label) { | 446 void NetworkMenuButton::SetTooltipAndAccessibleName(const string16& label) { |
441 SetTooltipText(label); | 447 SetTooltipText(label); |
442 SetAccessibleName(label); | 448 SetAccessibleName(label); |
443 } | 449 } |
444 | 450 |
445 } // namespace chromeos | 451 } // namespace chromeos |
OLD | NEW |