| Index: ash/common/system/chromeos/bluetooth/tray_bluetooth.cc
|
| diff --git a/ash/common/system/chromeos/bluetooth/tray_bluetooth.cc b/ash/common/system/chromeos/bluetooth/tray_bluetooth.cc
|
| index b9157d78af308ede6d670bfde9c20eed70432740..9480fbade168eb278392c7430358e24ff745637a 100644
|
| --- a/ash/common/system/chromeos/bluetooth/tray_bluetooth.cc
|
| +++ b/ash/common/system/chromeos/bluetooth/tray_bluetooth.cc
|
| @@ -16,6 +16,7 @@
|
| #include "ash/common/system/tray/tray_details_view.h"
|
| #include "ash/common/system/tray/tray_item_more.h"
|
| #include "ash/common/system/tray/tray_popup_header_button.h"
|
| +#include "ash/common/system/tray/view_click_listener.h"
|
| #include "ash/common/wm_shell.h"
|
| #include "grit/ash_resources.h"
|
| #include "grit/ash_strings.h"
|
| @@ -106,14 +107,16 @@
|
| DISALLOW_COPY_AND_ASSIGN(BluetoothDefaultView);
|
| };
|
|
|
| -class BluetoothDetailedView : public TrayDetailsView {
|
| +class BluetoothDetailedView : public TrayDetailsView,
|
| + public ViewClickListener,
|
| + public views::ButtonListener {
|
| public:
|
| BluetoothDetailedView(SystemTrayItem* owner, LoginStatus login)
|
| : TrayDetailsView(owner),
|
| login_(login),
|
| - manage_devices_(nullptr),
|
| - toggle_bluetooth_(nullptr),
|
| - enable_bluetooth_(nullptr) {
|
| + manage_devices_(NULL),
|
| + toggle_bluetooth_(NULL),
|
| + enable_bluetooth_(NULL) {
|
| CreateItems();
|
| }
|
|
|
| @@ -136,31 +139,28 @@
|
| void CreateItems() {
|
| CreateScrollableList();
|
| AppendSettingsEntries();
|
| - CreateTitleRow(IDS_ASH_STATUS_TRAY_BLUETOOTH);
|
| + AppendHeaderEntry();
|
| }
|
|
|
| void BluetoothStartDiscovering() {
|
| - // TODO(tdanderson|fukino): The material design version of the detailed
|
| - // view should use an infinite loader bar instead of a throbber. See
|
| - // crbug.com/632128.
|
| - SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
|
| - if (delegate->GetBluetoothDiscovering()) {
|
| - if (throbber_)
|
| - throbber_->Start();
|
| + SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
|
| + bool bluetooth_enabled = delegate->GetBluetoothEnabled();
|
| + bool bluetooth_discovering = delegate->GetBluetoothDiscovering();
|
| + if (bluetooth_discovering) {
|
| + throbber_->Start();
|
| return;
|
| }
|
| - if (throbber_)
|
| - throbber_->Stop();
|
| - if (delegate->GetBluetoothEnabled())
|
| + throbber_->Stop();
|
| + if (bluetooth_enabled) {
|
| delegate->BluetoothStartDiscovering();
|
| + }
|
| }
|
|
|
| void BluetoothStopDiscovering() {
|
| SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
|
| if (delegate && delegate->GetBluetoothDiscovering()) {
|
| delegate->BluetoothStopDiscovering();
|
| - if (throbber_)
|
| - throbber_->Stop();
|
| + throbber_->Stop();
|
| }
|
| }
|
|
|
| @@ -201,6 +201,34 @@
|
| new_discovered_not_paired_devices);
|
| }
|
|
|
| + void AppendHeaderEntry() {
|
| + CreateSpecialRow(IDS_ASH_STATUS_TRAY_BLUETOOTH, this);
|
| +
|
| + if (login_ == LoginStatus::LOCKED)
|
| + return;
|
| +
|
| + throbber_ = new ThrobberView;
|
| + throbber_->SetTooltipText(
|
| + l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_BLUETOOTH_DISCOVERING));
|
| + footer()->AddView(throbber_, false /* separator */);
|
| +
|
| + // Do not allow toggling bluetooth in the lock screen.
|
| + SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
|
| + toggle_bluetooth_ =
|
| + new TrayPopupHeaderButton(this, IDR_AURA_UBER_TRAY_BLUETOOTH_ENABLED,
|
| + IDR_AURA_UBER_TRAY_BLUETOOTH_DISABLED,
|
| + IDR_AURA_UBER_TRAY_BLUETOOTH_ENABLED_HOVER,
|
| + IDR_AURA_UBER_TRAY_BLUETOOTH_DISABLED_HOVER,
|
| + IDS_ASH_STATUS_TRAY_BLUETOOTH);
|
| + toggle_bluetooth_->SetToggled(!delegate->GetBluetoothEnabled());
|
| + toggle_bluetooth_->SetTooltipText(
|
| + l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_DISABLE_BLUETOOTH));
|
| + toggle_bluetooth_->SetToggledTooltipText(
|
| + l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ENABLE_BLUETOOTH));
|
| + toggle_bluetooth_->EnableCanvasFlippingForRTLUI(false);
|
| + footer()->AddButton(toggle_bluetooth_);
|
| + }
|
| +
|
| void UpdateHeaderEntry() {
|
| if (toggle_bluetooth_) {
|
| toggle_bluetooth_->SetToggled(
|
| @@ -211,7 +239,7 @@
|
| void UpdateDeviceScrollList() {
|
| device_map_.clear();
|
| scroll_content()->RemoveAllChildViews(true);
|
| - enable_bluetooth_ = nullptr;
|
| + enable_bluetooth_ = NULL;
|
|
|
| SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
|
| bool bluetooth_enabled = delegate->GetBluetoothEnabled();
|
| @@ -325,43 +353,35 @@
|
| }
|
| }
|
|
|
| - // TrayDetailsView:
|
| - void HandleViewClicked(views::View* view) override {
|
| - SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
|
| - if (view == manage_devices_) {
|
| + // Overridden from ViewClickListener.
|
| + void OnViewClicked(views::View* sender) override {
|
| + SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
|
| + if (sender == footer()->content()) {
|
| + TransitionToDefaultView();
|
| + } else if (sender == manage_devices_) {
|
| delegate->ManageBluetoothDevices();
|
| - return;
|
| - }
|
| -
|
| - if (view == enable_bluetooth_) {
|
| + } else if (sender == enable_bluetooth_) {
|
| WmShell::Get()->RecordUserMetricsAction(
|
| delegate->GetBluetoothEnabled() ? UMA_STATUS_AREA_BLUETOOTH_DISABLED
|
| : UMA_STATUS_AREA_BLUETOOTH_ENABLED);
|
| delegate->ToggleBluetooth();
|
| - return;
|
| - }
|
| -
|
| - if (!delegate->GetBluetoothEnabled())
|
| - return;
|
| -
|
| - std::map<views::View*, std::string>::iterator find;
|
| - find = device_map_.find(view);
|
| - if (find == device_map_.end())
|
| - return;
|
| -
|
| - const std::string device_id = find->second;
|
| - if (FoundDevice(device_id, connecting_devices_, nullptr))
|
| - return;
|
| -
|
| - UpdateClickedDevice(device_id, view);
|
| - delegate->ConnectToBluetoothDevice(device_id);
|
| - }
|
| -
|
| - void HandleButtonPressed(views::Button* sender,
|
| - const ui::Event& event) override {
|
| - if (MaterialDesignController::IsSystemTrayMenuMaterial())
|
| - return;
|
| -
|
| + } else {
|
| + if (!delegate->GetBluetoothEnabled())
|
| + return;
|
| + std::map<views::View*, std::string>::iterator find;
|
| + find = device_map_.find(sender);
|
| + if (find == device_map_.end())
|
| + return;
|
| + const std::string device_id = find->second;
|
| + if (FoundDevice(device_id, connecting_devices_, NULL))
|
| + return;
|
| + UpdateClickedDevice(device_id, sender);
|
| + delegate->ConnectToBluetoothDevice(device_id);
|
| + }
|
| + }
|
| +
|
| + // Overridden from ButtonListener.
|
| + void ButtonPressed(views::Button* sender, const ui::Event& event) override {
|
| SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
|
| if (sender == toggle_bluetooth_)
|
| delegate->ToggleBluetooth();
|
| @@ -369,48 +389,12 @@
|
| NOTREACHED();
|
| }
|
|
|
| - void CreateExtraTitleRowButtons() override {
|
| - // TODO(tdanderson|fukino): The material design version of the detailed
|
| - // view requires different buttons. See crbug.com/632128.
|
| - if (MaterialDesignController::IsSystemTrayMenuMaterial())
|
| - return;
|
| -
|
| - if (login_ == LoginStatus::LOCKED)
|
| - return;
|
| -
|
| - throbber_ = new ThrobberView;
|
| - throbber_->SetTooltipText(
|
| - l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_BLUETOOTH_DISCOVERING));
|
| - title_row()->AddView(throbber_, false /* separator */);
|
| -
|
| - // Do not allow toggling bluetooth in the lock screen.
|
| - SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
|
| - toggle_bluetooth_ =
|
| - new TrayPopupHeaderButton(this, IDR_AURA_UBER_TRAY_BLUETOOTH_ENABLED,
|
| - IDR_AURA_UBER_TRAY_BLUETOOTH_DISABLED,
|
| - IDR_AURA_UBER_TRAY_BLUETOOTH_ENABLED_HOVER,
|
| - IDR_AURA_UBER_TRAY_BLUETOOTH_DISABLED_HOVER,
|
| - IDS_ASH_STATUS_TRAY_BLUETOOTH);
|
| - toggle_bluetooth_->SetToggled(!delegate->GetBluetoothEnabled());
|
| - toggle_bluetooth_->SetTooltipText(
|
| - l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_DISABLE_BLUETOOTH));
|
| - toggle_bluetooth_->SetToggledTooltipText(
|
| - l10n_util::GetStringUTF16(IDS_ASH_STATUS_TRAY_ENABLE_BLUETOOTH));
|
| - toggle_bluetooth_->EnableCanvasFlippingForRTLUI(false);
|
| - title_row()->AddButton(toggle_bluetooth_);
|
| - }
|
| -
|
| LoginStatus login_;
|
|
|
| std::map<views::View*, std::string> device_map_;
|
| views::View* manage_devices_;
|
| -
|
| - // Not used in material design.
|
| ThrobberView* throbber_;
|
| -
|
| - // Not used in material design.
|
| TrayPopupHeaderButton* toggle_bluetooth_;
|
| -
|
| HoverHighlightView* enable_bluetooth_;
|
| BluetoothDeviceList connected_devices_;
|
| BluetoothDeviceList connecting_devices_;
|
|
|