OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/common/system/chromeos/bluetooth/tray_bluetooth.h" | 5 #include "ash/common/system/chromeos/bluetooth/tray_bluetooth.h" |
6 | 6 |
7 #include "ash/common/material_design/material_design_controller.h" | 7 #include "ash/common/material_design/material_design_controller.h" |
8 #include "ash/common/session/session_state_delegate.h" | 8 #include "ash/common/session/session_state_delegate.h" |
9 #include "ash/common/system/tray/fixed_sized_scroll_view.h" | 9 #include "ash/common/system/tray/fixed_sized_scroll_view.h" |
10 #include "ash/common/system/tray/hover_highlight_view.h" | 10 #include "ash/common/system/tray/hover_highlight_view.h" |
11 #include "ash/common/system/tray/system_tray.h" | 11 #include "ash/common/system/tray/system_tray.h" |
12 #include "ash/common/system/tray/system_tray_delegate.h" | 12 #include "ash/common/system/tray/system_tray_delegate.h" |
13 #include "ash/common/system/tray/system_tray_notifier.h" | 13 #include "ash/common/system/tray/system_tray_notifier.h" |
14 #include "ash/common/system/tray/throbber_view.h" | 14 #include "ash/common/system/tray/throbber_view.h" |
15 #include "ash/common/system/tray/tray_constants.h" | 15 #include "ash/common/system/tray/tray_constants.h" |
16 #include "ash/common/system/tray/tray_details_view.h" | 16 #include "ash/common/system/tray/tray_details_view.h" |
17 #include "ash/common/system/tray/tray_item_more.h" | 17 #include "ash/common/system/tray/tray_item_more.h" |
18 #include "ash/common/system/tray/tray_popup_header_button.h" | 18 #include "ash/common/system/tray/tray_popup_header_button.h" |
| 19 #include "ash/common/system/tray/tray_popup_item_style.h" |
19 #include "ash/common/wm_shell.h" | 20 #include "ash/common/wm_shell.h" |
20 #include "ash/resources/vector_icons/vector_icons.h" | 21 #include "ash/resources/vector_icons/vector_icons.h" |
21 #include "grit/ash_resources.h" | 22 #include "grit/ash_resources.h" |
22 #include "grit/ash_strings.h" | 23 #include "grit/ash_strings.h" |
23 #include "ui/base/l10n/l10n_util.h" | 24 #include "ui/base/l10n/l10n_util.h" |
24 #include "ui/base/resource/resource_bundle.h" | 25 #include "ui/base/resource/resource_bundle.h" |
25 #include "ui/gfx/image/image.h" | 26 #include "ui/gfx/image/image.h" |
26 #include "ui/gfx/paint_vector_icon.h" | 27 #include "ui/gfx/paint_vector_icon.h" |
27 #include "ui/views/controls/button/toggle_button.h" | 28 #include "ui/views/controls/button/toggle_button.h" |
28 #include "ui/views/controls/image_view.h" | 29 #include "ui/views/controls/image_view.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
64 } | 65 } |
65 } | 66 } |
66 | 67 |
67 } // namespace | 68 } // namespace |
68 | 69 |
69 class BluetoothDefaultView : public TrayItemMore { | 70 class BluetoothDefaultView : public TrayItemMore { |
70 public: | 71 public: |
71 BluetoothDefaultView(SystemTrayItem* owner, bool show_more) | 72 BluetoothDefaultView(SystemTrayItem* owner, bool show_more) |
72 : TrayItemMore(owner, show_more) { | 73 : TrayItemMore(owner, show_more) { |
73 if (!MaterialDesignController::IsSystemTrayMenuMaterial()) { | 74 if (!MaterialDesignController::IsSystemTrayMenuMaterial()) { |
| 75 // The icon doesn't change in non-md. |
74 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); | 76 ui::ResourceBundle& bundle = ui::ResourceBundle::GetSharedInstance(); |
75 SetImage( | 77 SetImage( |
76 *bundle.GetImageNamed(IDR_AURA_UBER_TRAY_BLUETOOTH).ToImageSkia()); | 78 *bundle.GetImageNamed(IDR_AURA_UBER_TRAY_BLUETOOTH).ToImageSkia()); |
77 } | 79 } |
78 Update(); | |
79 } | 80 } |
80 | 81 |
81 ~BluetoothDefaultView() override {} | 82 ~BluetoothDefaultView() override {} |
82 | 83 |
83 void Update() { | 84 void Update() { |
84 SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate(); | 85 SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate(); |
85 const bool enabled = delegate->GetBluetoothEnabled(); | 86 const bool enabled = delegate->GetBluetoothEnabled(); |
86 if (MaterialDesignController::IsSystemTrayMenuMaterial()) { | |
87 SetImage(gfx::CreateVectorIcon( | |
88 enabled ? kSystemMenuBluetoothIcon : kSystemMenuBluetoothDisabledIcon, | |
89 kMenuIconColor)); | |
90 } | |
91 | |
92 if (delegate->GetBluetoothAvailable()) { | 87 if (delegate->GetBluetoothAvailable()) { |
93 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 88 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
94 const base::string16 label = rb.GetLocalizedString( | 89 const base::string16 label = rb.GetLocalizedString( |
95 enabled ? IDS_ASH_STATUS_TRAY_BLUETOOTH_ENABLED | 90 enabled ? IDS_ASH_STATUS_TRAY_BLUETOOTH_ENABLED |
96 : IDS_ASH_STATUS_TRAY_BLUETOOTH_DISABLED); | 91 : IDS_ASH_STATUS_TRAY_BLUETOOTH_DISABLED); |
97 SetLabel(label); | 92 SetLabel(label); |
98 SetAccessibleName(label); | 93 SetAccessibleName(label); |
99 SetVisible(true); | 94 SetVisible(true); |
100 } else { | 95 } else { |
101 SetVisible(false); | 96 SetVisible(false); |
102 } | 97 } |
| 98 UpdateStyle(); |
| 99 } |
| 100 |
| 101 protected: |
| 102 // TrayItemMore: |
| 103 std::unique_ptr<TrayPopupItemStyle> CreateStyle() const override { |
| 104 SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate(); |
| 105 std::unique_ptr<TrayPopupItemStyle> style = |
| 106 base::MakeUnique<TrayPopupItemStyle>( |
| 107 GetNativeTheme(), |
| 108 TrayPopupItemStyle::FontStyle::DEFAULT_VIEW_LABEL); |
| 109 |
| 110 style->set_color_style( |
| 111 delegate->GetBluetoothEnabled() |
| 112 ? TrayPopupItemStyle::ColorStyle::ACTIVE |
| 113 : delegate->GetBluetoothAvailable() |
| 114 ? TrayPopupItemStyle::ColorStyle::INACTIVE |
| 115 : TrayPopupItemStyle::ColorStyle::DISABLED); |
| 116 |
| 117 return style; |
| 118 } |
| 119 |
| 120 void UpdateStyle() override { |
| 121 TrayItemMore::UpdateStyle(); |
| 122 |
| 123 if (!MaterialDesignController::IsSystemTrayMenuMaterial()) |
| 124 return; |
| 125 |
| 126 SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate(); |
| 127 std::unique_ptr<TrayPopupItemStyle> style = CreateStyle(); |
| 128 |
| 129 SetImage(gfx::CreateVectorIcon(delegate->GetBluetoothEnabled() |
| 130 ? kSystemMenuBluetoothIcon |
| 131 : kSystemMenuBluetoothDisabledIcon, |
| 132 style->GetForegroundColor())); |
103 } | 133 } |
104 | 134 |
105 private: | 135 private: |
106 DISALLOW_COPY_AND_ASSIGN(BluetoothDefaultView); | 136 DISALLOW_COPY_AND_ASSIGN(BluetoothDefaultView); |
107 }; | 137 }; |
108 | 138 |
109 class BluetoothDetailedView : public TrayDetailsView { | 139 class BluetoothDetailedView : public TrayDetailsView { |
110 public: | 140 public: |
111 BluetoothDetailedView(SystemTrayItem* owner, LoginStatus login) | 141 BluetoothDetailedView(SystemTrayItem* owner, LoginStatus login) |
112 : TrayDetailsView(owner), | 142 : TrayDetailsView(owner), |
(...skipping 330 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
443 } | 473 } |
444 | 474 |
445 views::View* TrayBluetooth::CreateTrayView(LoginStatus status) { | 475 views::View* TrayBluetooth::CreateTrayView(LoginStatus status) { |
446 return NULL; | 476 return NULL; |
447 } | 477 } |
448 | 478 |
449 views::View* TrayBluetooth::CreateDefaultView(LoginStatus status) { | 479 views::View* TrayBluetooth::CreateDefaultView(LoginStatus status) { |
450 CHECK(default_ == NULL); | 480 CHECK(default_ == NULL); |
451 default_ = | 481 default_ = |
452 new tray::BluetoothDefaultView(this, status != LoginStatus::LOCKED); | 482 new tray::BluetoothDefaultView(this, status != LoginStatus::LOCKED); |
| 483 default_->Update(); |
453 return default_; | 484 return default_; |
454 } | 485 } |
455 | 486 |
456 views::View* TrayBluetooth::CreateDetailedView(LoginStatus status) { | 487 views::View* TrayBluetooth::CreateDetailedView(LoginStatus status) { |
457 if (!WmShell::Get()->system_tray_delegate()->GetBluetoothAvailable()) | 488 if (!WmShell::Get()->system_tray_delegate()->GetBluetoothAvailable()) |
458 return NULL; | 489 return NULL; |
459 WmShell::Get()->RecordUserMetricsAction( | 490 WmShell::Get()->RecordUserMetricsAction( |
460 UMA_STATUS_AREA_DETAILED_BLUETOOTH_VIEW); | 491 UMA_STATUS_AREA_DETAILED_BLUETOOTH_VIEW); |
461 CHECK(detailed_ == NULL); | 492 CHECK(detailed_ == NULL); |
462 detailed_ = new tray::BluetoothDetailedView(this, status); | 493 detailed_ = new tray::BluetoothDetailedView(this, status); |
(...skipping 20 matching lines...) Expand all Loading... |
483 detailed_->Update(); | 514 detailed_->Update(); |
484 } | 515 } |
485 | 516 |
486 void TrayBluetooth::OnBluetoothDiscoveringChanged() { | 517 void TrayBluetooth::OnBluetoothDiscoveringChanged() { |
487 if (!detailed_) | 518 if (!detailed_) |
488 return; | 519 return; |
489 detailed_->Update(); | 520 detailed_->Update(); |
490 } | 521 } |
491 | 522 |
492 } // namespace ash | 523 } // namespace ash |
OLD | NEW |