OLD | NEW |
---|---|
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "ash/system/network/vpn_list_view.h" | 5 #include "ash/system/network/vpn_list_view.h" |
6 | 6 |
7 #include <memory> | 7 #include <memory> |
8 #include <utility> | 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "ash/ash_view_ids.h" | 11 #include "ash/ash_view_ids.h" |
12 #include "ash/resources/vector_icons/vector_icons.h" | 12 #include "ash/resources/vector_icons/vector_icons.h" |
13 #include "ash/shell.h" | 13 #include "ash/shell.h" |
14 #include "ash/shell_port.h" | 14 #include "ash/shell_port.h" |
15 #include "ash/strings/grit/ash_strings.h" | 15 #include "ash/strings/grit/ash_strings.h" |
16 #include "ash/system/network/network_icon.h" | 16 #include "ash/system/network/network_icon.h" |
17 #include "ash/system/network/network_icon_animation.h" | 17 #include "ash/system/network/network_icon_animation.h" |
18 #include "ash/system/network/network_icon_animation_observer.h" | 18 #include "ash/system/network/network_icon_animation_observer.h" |
19 #include "ash/system/network/network_list_delegate.h" | 19 #include "ash/system/network/network_state_list_detailed_view.h" |
20 #include "ash/system/network/vpn_list.h" | 20 #include "ash/system/network/vpn_list.h" |
21 #include "ash/system/tray/hover_highlight_view.h" | 21 #include "ash/system/tray/hover_highlight_view.h" |
22 #include "ash/system/tray/system_menu_button.h" | 22 #include "ash/system/tray/system_menu_button.h" |
23 #include "ash/system/tray/system_tray_controller.h" | 23 #include "ash/system/tray/system_tray_controller.h" |
24 #include "ash/system/tray/throbber_view.h" | 24 #include "ash/system/tray/throbber_view.h" |
25 #include "ash/system/tray/tray_constants.h" | 25 #include "ash/system/tray/tray_constants.h" |
26 #include "ash/system/tray/tray_popup_utils.h" | 26 #include "ash/system/tray/tray_popup_utils.h" |
27 #include "ash/system/tray/tri_view.h" | 27 #include "ash/system/tray/tri_view.h" |
28 #include "base/bind.h" | 28 #include "base/bind.h" |
29 #include "base/bind_helpers.h" | 29 #include "base/bind_helpers.h" |
(...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
214 tri_view()->AddView(TriView::Container::END, disconnect_button_); | 214 tri_view()->AddView(TriView::Container::END, disconnect_button_); |
215 tri_view()->SetContainerVisible(TriView::Container::END, true); | 215 tri_view()->SetContainerVisible(TriView::Container::END, true); |
216 tri_view()->SetContainerBorder( | 216 tri_view()->SetContainerBorder( |
217 TriView::Container::END, | 217 TriView::Container::END, |
218 views::CreateEmptyBorder(0, 0, 0, kTrayPopupButtonEndMargin)); | 218 views::CreateEmptyBorder(0, 0, 0, kTrayPopupButtonEndMargin)); |
219 } | 219 } |
220 Layout(); | 220 Layout(); |
221 } | 221 } |
222 | 222 |
223 // TODO(varkha): Consolidate with a similar method in tray_bluetooth.cc. | 223 // TODO(varkha): Consolidate with a similar method in tray_bluetooth.cc. |
224 void VPNListNetworkEntry::SetupConnectedItem(const base::string16& text, | 224 void VPNListNetworkEntry::SetupConnectedItem(const base::string16& text, |
tdanderson
2017/04/28 16:36:20
Any way to share this code with the SetupConnect{e
mohsen
2017/04/28 21:51:32
I have more refactorings planned which make sharin
| |
225 const gfx::ImageSkia& image) { | 225 const gfx::ImageSkia& image) { |
226 AddIconAndLabels( | 226 AddIconAndLabels( |
227 image, text, | 227 image, text, |
228 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_STATUS_CONNECTED)); | 228 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_STATUS_CONNECTED)); |
229 TrayPopupItemStyle style(TrayPopupItemStyle::FontStyle::CAPTION); | 229 TrayPopupItemStyle style(TrayPopupItemStyle::FontStyle::CAPTION); |
230 style.set_color_style(TrayPopupItemStyle::ColorStyle::CONNECTED); | 230 style.set_color_style(TrayPopupItemStyle::ColorStyle::CONNECTED); |
231 style.SetupLabel(sub_text_label()); | 231 style.SetupLabel(sub_text_label()); |
232 } | 232 } |
233 | 233 |
234 // TODO(varkha): Consolidate with a similar method in tray_bluetooth.cc. | 234 // TODO(varkha): Consolidate with a similar method in tray_bluetooth.cc. |
235 void VPNListNetworkEntry::SetupConnectingItem(const base::string16& text, | 235 void VPNListNetworkEntry::SetupConnectingItem(const base::string16& text, |
236 const gfx::ImageSkia& image) { | 236 const gfx::ImageSkia& image) { |
237 AddIconAndLabels( | 237 AddIconAndLabels( |
238 image, text, | 238 image, text, |
239 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_STATUS_CONNECTING)); | 239 l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_NETWORK_STATUS_CONNECTING)); |
240 ThrobberView* throbber = new ThrobberView; | 240 ThrobberView* throbber = new ThrobberView; |
241 throbber->Start(); | 241 throbber->Start(); |
242 AddRightView(throbber); | 242 AddRightView(throbber); |
243 } | 243 } |
244 | 244 |
245 } // namespace | 245 } // namespace |
246 | 246 |
247 VPNListView::VPNListView(NetworkListDelegate* delegate) : delegate_(delegate) { | 247 VPNListView::VPNListView(tray::NetworkStateListDetailedView* detailed_view) |
248 : NetworkListViewBase(detailed_view) { | |
248 Shell::Get()->vpn_list()->AddObserver(this); | 249 Shell::Get()->vpn_list()->AddObserver(this); |
249 } | 250 } |
250 | 251 |
251 VPNListView::~VPNListView() { | 252 VPNListView::~VPNListView() { |
252 Shell::Get()->vpn_list()->RemoveObserver(this); | 253 Shell::Get()->vpn_list()->RemoveObserver(this); |
253 } | 254 } |
254 | 255 |
255 void VPNListView::Update() { | 256 void VPNListView::Update() { |
256 // Before updating the list, determine whether the user was hovering over one | 257 // Before updating the list, determine whether the user was hovering over one |
257 // of the VPN provider or network entries. | 258 // of the VPN provider or network entries. |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
307 network_view_guid_map_) { | 308 network_view_guid_map_) { |
308 if (entry.second == hovered_network_guid) { | 309 if (entry.second == hovered_network_guid) { |
309 scroll_to_show_view = entry.first; | 310 scroll_to_show_view = entry.first; |
310 break; | 311 break; |
311 } | 312 } |
312 } | 313 } |
313 } | 314 } |
314 | 315 |
315 // Layout the updated list. | 316 // Layout the updated list. |
316 container()->SizeToPreferredSize(); | 317 container()->SizeToPreferredSize(); |
317 delegate_->RelayoutScrollList(); | 318 detailed_view()->RelayoutScrollList(); |
318 | 319 |
319 if (scroll_to_show_view) { | 320 if (scroll_to_show_view) { |
320 // Scroll the list so that |scroll_to_show_view| is in view. | 321 // Scroll the list so that |scroll_to_show_view| is in view. |
321 container()->ScrollRectToVisible(scroll_to_show_view->bounds()); | 322 container()->ScrollRectToVisible(scroll_to_show_view->bounds()); |
322 } | 323 } |
323 } | 324 } |
324 | 325 |
325 bool VPNListView::IsNetworkEntry(views::View* view, std::string* guid) const { | 326 bool VPNListView::IsNetworkEntry(views::View* view, std::string* guid) const { |
326 const auto& entry = network_view_guid_map_.find(view); | 327 const auto& entry = network_view_guid_map_.find(view); |
327 if (entry == network_view_guid_map_.end()) | 328 if (entry == network_view_guid_map_.end()) |
(...skipping 22 matching lines...) Expand all Loading... | |
350 UMA_STATUS_AREA_VPN_ADD_BUILT_IN_CLICKED); | 351 UMA_STATUS_AREA_VPN_ADD_BUILT_IN_CLICKED); |
351 Shell::Get()->system_tray_controller()->ShowNetworkCreate( | 352 Shell::Get()->system_tray_controller()->ShowNetworkCreate( |
352 shill::kTypeVPN); | 353 shill::kTypeVPN); |
353 } | 354 } |
354 return; | 355 return; |
355 } | 356 } |
356 | 357 |
357 // If the user clicked on a network entry, let the |delegate_| trigger a | 358 // If the user clicked on a network entry, let the |delegate_| trigger a |
358 // connection attempt (if the network is currently disconnected) or show a | 359 // connection attempt (if the network is currently disconnected) or show a |
359 // configuration dialog (if the network is currently connected or connecting). | 360 // configuration dialog (if the network is currently connected or connecting). |
360 delegate_->OnNetworkEntryClicked(sender); | 361 detailed_view()->OnNetworkEntryClicked(sender); |
361 } | 362 } |
362 | 363 |
363 void VPNListView::AddNetwork(const chromeos::NetworkState* network) { | 364 void VPNListView::AddNetwork(const chromeos::NetworkState* network) { |
364 views::View* entry(new VPNListNetworkEntry(this, network)); | 365 views::View* entry(new VPNListNetworkEntry(this, network)); |
365 container()->AddChildView(entry); | 366 container()->AddChildView(entry); |
366 network_view_guid_map_[entry] = network->guid(); | 367 network_view_guid_map_[entry] = network->guid(); |
367 list_empty_ = false; | 368 list_empty_ = false; |
368 } | 369 } |
369 | 370 |
370 void VPNListView::AddProviderAndNetworks( | 371 void VPNListView::AddProviderAndNetworks( |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
413 } | 414 } |
414 } | 415 } |
415 | 416 |
416 // Add providers without any configured networks, in the order that the | 417 // Add providers without any configured networks, in the order that the |
417 // providers were returned by the extensions system. | 418 // providers were returned by the extensions system. |
418 for (const VPNProvider& provider : providers) | 419 for (const VPNProvider& provider : providers) |
419 AddProviderAndNetworks(provider, networks); | 420 AddProviderAndNetworks(provider, networks); |
420 } | 421 } |
421 | 422 |
422 } // namespace ash | 423 } // namespace ash |
OLD | NEW |