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/cast/tray_cast.h" | 5 #include "ash/system/cast/tray_cast.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 void SimulateViewClickedForTest(const std::string& receiver_id); | 308 void SimulateViewClickedForTest(const std::string& receiver_id); |
309 | 309 |
310 // Updates the list of available receivers. | 310 // Updates the list of available receivers. |
311 void UpdateReceiverList( | 311 void UpdateReceiverList( |
312 const std::vector<mojom::SinkAndRoutePtr>& sinks_routes); | 312 const std::vector<mojom::SinkAndRoutePtr>& sinks_routes); |
313 | 313 |
314 private: | 314 private: |
315 void CreateItems(); | 315 void CreateItems(); |
316 | 316 |
317 void UpdateReceiverListFromCachedData(); | 317 void UpdateReceiverListFromCachedData(); |
318 views::View* AddToReceiverList(const mojom::SinkAndRoutePtr& sink_route); | |
319 | 318 |
320 // TrayDetailsView: | 319 // TrayDetailsView: |
321 void HandleViewClicked(views::View* view) override; | 320 void HandleViewClicked(views::View* view) override; |
322 | 321 |
323 // A mapping from the receiver id to the receiver/activity data. | 322 // A mapping from the receiver id to the receiver/activity data. |
324 std::map<std::string, ash::mojom::SinkAndRoutePtr> sinks_and_routes_; | 323 std::map<std::string, ash::mojom::SinkAndRoutePtr> sinks_and_routes_; |
325 // A mapping from the view pointer to the associated activity id. | 324 // A mapping from the view pointer to the associated activity id. |
326 std::map<views::View*, ash::mojom::CastSinkPtr> view_to_sink_map_; | 325 std::map<views::View*, ash::mojom::CastSinkPtr> view_to_sink_map_; |
327 | 326 |
328 DISALLOW_COPY_AND_ASSIGN(CastDetailedView); | 327 DISALLOW_COPY_AND_ASSIGN(CastDetailedView); |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
381 } | 380 } |
382 | 381 |
383 void CastDetailedView::UpdateReceiverListFromCachedData() { | 382 void CastDetailedView::UpdateReceiverListFromCachedData() { |
384 // Remove all of the existing views. | 383 // Remove all of the existing views. |
385 view_to_sink_map_.clear(); | 384 view_to_sink_map_.clear(); |
386 scroll_content()->RemoveAllChildViews(true); | 385 scroll_content()->RemoveAllChildViews(true); |
387 | 386 |
388 // Add a view for each receiver. | 387 // Add a view for each receiver. |
389 for (auto& it : sinks_and_routes_) { | 388 for (auto& it : sinks_and_routes_) { |
390 const ash::mojom::SinkAndRoutePtr& sink_route = it.second; | 389 const ash::mojom::SinkAndRoutePtr& sink_route = it.second; |
391 views::View* container = AddToReceiverList(sink_route); | 390 const base::string16 name = base::UTF8ToUTF16(sink_route->sink->name); |
| 391 views::View* container = AddScrollListItem(kSystemMenuCastDeviceIcon, name); |
392 view_to_sink_map_[container] = sink_route->sink.Clone(); | 392 view_to_sink_map_[container] = sink_route->sink.Clone(); |
393 } | 393 } |
394 | 394 |
395 scroll_content()->SizeToPreferredSize(); | 395 scroll_content()->SizeToPreferredSize(); |
396 scroller()->Layout(); | 396 scroller()->Layout(); |
397 } | 397 } |
398 | 398 |
399 views::View* CastDetailedView::AddToReceiverList( | |
400 const ash::mojom::SinkAndRoutePtr& sink_route) { | |
401 const gfx::ImageSkia image = | |
402 gfx::CreateVectorIcon(kSystemMenuCastDeviceIcon, kMenuIconColor); | |
403 | |
404 HoverHighlightView* container = new HoverHighlightView(this); | |
405 container->AddIconAndLabel(image, base::UTF8ToUTF16(sink_route->sink->name)); | |
406 | |
407 scroll_content()->AddChildView(container); | |
408 return container; | |
409 } | |
410 | |
411 void CastDetailedView::HandleViewClicked(views::View* view) { | 399 void CastDetailedView::HandleViewClicked(views::View* view) { |
412 // Find the receiver we are going to cast to. | 400 // Find the receiver we are going to cast to. |
413 auto it = view_to_sink_map_.find(view); | 401 auto it = view_to_sink_map_.find(view); |
414 if (it != view_to_sink_map_.end()) { | 402 if (it != view_to_sink_map_.end()) { |
415 Shell::Get()->cast_config()->CastToSink(it->second.Clone()); | 403 Shell::Get()->cast_config()->CastToSink(it->second.Clone()); |
416 ShellPort::Get()->RecordUserMetricsAction( | 404 ShellPort::Get()->RecordUserMetricsAction( |
417 UMA_STATUS_AREA_DETAILED_CAST_VIEW_LAUNCH_CAST); | 405 UMA_STATUS_AREA_DETAILED_CAST_VIEW_LAUNCH_CAST); |
418 } | 406 } |
419 } | 407 } |
420 | 408 |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
528 | 516 |
529 return false; | 517 return false; |
530 } | 518 } |
531 | 519 |
532 void TrayCast::OnCastingSessionStartedOrStopped(bool started) { | 520 void TrayCast::OnCastingSessionStartedOrStopped(bool started) { |
533 is_mirror_casting_ = started; | 521 is_mirror_casting_ = started; |
534 UpdatePrimaryView(); | 522 UpdatePrimaryView(); |
535 } | 523 } |
536 | 524 |
537 } // namespace ash | 525 } // namespace ash |
OLD | NEW |