Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(50)

Side by Side Diff: ash/common/system/chromeos/bluetooth/tray_bluetooth.cc

Issue 2381493005: Add bluetooth device type icons on MD system tray. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/system/tray/tray_popup_item_style.h"
20 #include "ash/common/wm_shell.h" 20 #include "ash/common/wm_shell.h"
21 #include "ash/resources/vector_icons/vector_icons.h" 21 #include "ash/resources/vector_icons/vector_icons.h"
22 #include "grit/ash_resources.h" 22 #include "grit/ash_resources.h"
23 #include "grit/ash_strings.h" 23 #include "grit/ash_strings.h"
24 #include "ui/base/l10n/l10n_util.h" 24 #include "ui/base/l10n/l10n_util.h"
25 #include "ui/base/resource/resource_bundle.h" 25 #include "ui/base/resource/resource_bundle.h"
26 #include "ui/gfx/color_palette.h"
26 #include "ui/gfx/image/image.h" 27 #include "ui/gfx/image/image.h"
27 #include "ui/gfx/paint_vector_icon.h" 28 #include "ui/gfx/paint_vector_icon.h"
29 #include "ui/gfx/vector_icons/vector_icons.h"
tdanderson 2016/09/29 18:54:39 is this #include needed?
fukino 2016/09/30 02:43:49 Removed. Thanks!
28 #include "ui/views/controls/button/toggle_button.h" 30 #include "ui/views/controls/button/toggle_button.h"
29 #include "ui/views/controls/image_view.h" 31 #include "ui/views/controls/image_view.h"
30 #include "ui/views/controls/label.h" 32 #include "ui/views/controls/label.h"
31 #include "ui/views/layout/box_layout.h" 33 #include "ui/views/layout/box_layout.h"
32 34
33 namespace ash { 35 namespace ash {
34 namespace tray { 36 namespace tray {
35 namespace { 37 namespace {
36 38
37 // Updates bluetooth device |device| in the |list|. If it is new, append to the 39 // Updates bluetooth device |device| in the |list|. If it is new, append to the
(...skipping 185 matching lines...) Expand 10 before | Expand all | Expand 10 after
223 new_connecting_devices); 225 new_connecting_devices);
224 RemoveObsoleteBluetoothDevicesFromList(&connected_devices_, 226 RemoveObsoleteBluetoothDevicesFromList(&connected_devices_,
225 new_connected_devices); 227 new_connected_devices);
226 RemoveObsoleteBluetoothDevicesFromList(&paired_not_connected_devices_, 228 RemoveObsoleteBluetoothDevicesFromList(&paired_not_connected_devices_,
227 new_paired_not_connected_devices); 229 new_paired_not_connected_devices);
228 RemoveObsoleteBluetoothDevicesFromList(&discovered_not_paired_devices_, 230 RemoveObsoleteBluetoothDevicesFromList(&discovered_not_paired_devices_,
229 new_discovered_not_paired_devices); 231 new_discovered_not_paired_devices);
230 } 232 }
231 233
232 void UpdateHeaderEntry() { 234 void UpdateHeaderEntry() {
233 if (toggle_bluetooth_) { 235 bool isBluetoothEnabled =
234 toggle_bluetooth_->SetToggled( 236 WmShell::Get()->system_tray_delegate()->GetBluetoothEnabled();
235 !WmShell::Get()->system_tray_delegate()->GetBluetoothEnabled()); 237 if (toggle_)
236 } 238 toggle_->SetIsOn(isBluetoothEnabled, false);
239 if (toggle_bluetooth_)
tdanderson 2016/09/29 18:54:39 nit: else if (since you'll never have both visible
fukino 2016/09/30 02:43:49 Done.
240 toggle_bluetooth_->SetToggled(!isBluetoothEnabled);
237 } 241 }
238 242
239 void UpdateDeviceScrollList() { 243 void UpdateDeviceScrollList() {
240 device_map_.clear(); 244 device_map_.clear();
241 scroll_content()->RemoveAllChildViews(true); 245 scroll_content()->RemoveAllChildViews(true);
242 enable_bluetooth_ = nullptr; 246 enable_bluetooth_ = nullptr;
243 247
244 SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate(); 248 SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
245 bool bluetooth_enabled = delegate->GetBluetoothEnabled(); 249 bool bluetooth_enabled = delegate->GetBluetoothEnabled();
246 bool blueooth_available = delegate->GetBluetoothAvailable(); 250 bool blueooth_available = delegate->GetBluetoothAvailable();
(...skipping 25 matching lines...) Expand all
272 } 276 }
273 277
274 scroll_content()->SizeToPreferredSize(); 278 scroll_content()->SizeToPreferredSize();
275 } 279 }
276 280
277 void AppendSameTypeDevicesToScrollList(const BluetoothDeviceList& list, 281 void AppendSameTypeDevicesToScrollList(const BluetoothDeviceList& list,
278 bool highlight, 282 bool highlight,
279 bool checked, 283 bool checked,
280 bool enabled) { 284 bool enabled) {
281 for (size_t i = 0; i < list.size(); ++i) { 285 for (size_t i = 0; i < list.size(); ++i) {
282 HoverHighlightView* container = 286 if (MaterialDesignController::IsSystemTrayMenuMaterial()) {
283 AddScrollListItem(list[i].display_name, highlight, checked, enabled); 287 HoverHighlightView* container =
284 device_map_[container] = list[i].address; 288 AddScrollListItemWithIcon(list[i].display_name, highlight, checked,
289 enabled, list[i].icon_image);
290 device_map_[container] = list[i].address;
tdanderson 2016/09/29 18:54:39 nit: factor out lines 290 and 294 to after the if-
fukino 2016/09/30 02:43:49 Done. I used "md ? ... : ...";
291 } else {
292 HoverHighlightView* container = AddScrollListItem(
293 list[i].display_name, highlight, checked, enabled);
294 device_map_[container] = list[i].address;
295 }
285 } 296 }
286 } 297 }
287 298
288 HoverHighlightView* AddScrollListItem(const base::string16& text, 299 HoverHighlightView* AddScrollListItem(const base::string16& text,
tdanderson 2016/09/29 18:54:39 As a side note, wherever it makes sense to do so,
fukino 2016/09/30 02:43:49 Done.
289 bool highlight, 300 bool highlight,
290 bool checked, 301 bool checked,
291 bool enabled) { 302 bool enabled) {
292 HoverHighlightView* container = new HoverHighlightView(this); 303 HoverHighlightView* container = new HoverHighlightView(this);
293 views::Label* label = 304 views::Label* label =
294 container->AddCheckableLabel(text, highlight, checked); 305 container->AddCheckableLabel(text, highlight, checked);
295 label->SetEnabled(enabled); 306 label->SetEnabled(enabled);
296 scroll_content()->AddChildView(container); 307 scroll_content()->AddChildView(container);
297 return container; 308 return container;
298 } 309 }
299 310
311 HoverHighlightView* AddScrollListItemWithIcon(const base::string16& text,
312 bool highlight,
313 bool checked,
314 bool enabled,
315 const gfx::ImageSkia& image) {
316 HoverHighlightView* container = new HoverHighlightView(this);
fukino 2016/09/29 16:27:36 This implementation to place icons/labels/etc... i
tdanderson 2016/09/29 18:54:39 Acknowledged. Whatever you do here is probably wha
fukino 2016/09/30 02:43:49 Thanks. I'll update this design next, and I'll mak
317 const int padding = (kMenuButtonSize - image.width()) / 2;
318 container->AddIconAndLabelCustomSize(
319 image, text, highlight,
320 image.width() + kMenuSeparatorVerticalPadding * 2, padding, padding);
321 gfx::ImageSkia check_mark =
322 CreateVectorIcon(gfx::VectorIconId::CHECK_CIRCLE, gfx::kGoogleGreen700);
323 container->AddRightIcon(check_mark, check_mark.width());
324 container->SetRightIconVisible(checked);
325 container->text_label()->SetEnabled(enabled);
326 scroll_content()->AddChildView(container);
327 return container;
328 }
329
300 // Add settings entries. 330 // Add settings entries.
301 void AppendSettingsEntries() { 331 void AppendSettingsEntries() {
302 if (!WmShell::Get()->system_tray_delegate()->ShouldShowSettings()) 332 if (!WmShell::Get()->system_tray_delegate()->ShouldShowSettings())
303 return; 333 return;
304 334
305 // Add bluetooth device requires a browser window, hide it for non logged in 335 // Add bluetooth device requires a browser window, hide it for non logged in
306 // user. 336 // user.
307 if (login_ == LoginStatus::NOT_LOGGED_IN || login_ == LoginStatus::LOCKED || 337 if (login_ == LoginStatus::NOT_LOGGED_IN || login_ == LoginStatus::LOCKED ||
308 WmShell::Get()->GetSessionStateDelegate()->IsInSecondaryLoginScreen()) { 338 WmShell::Get()->GetSessionStateDelegate()->IsInSecondaryLoginScreen()) {
309 return; 339 return;
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
382 if (FoundDevice(device_id, connecting_devices_, nullptr)) 412 if (FoundDevice(device_id, connecting_devices_, nullptr))
383 return; 413 return;
384 414
385 UpdateClickedDevice(device_id, view); 415 UpdateClickedDevice(device_id, view);
386 delegate->ConnectToBluetoothDevice(device_id); 416 delegate->ConnectToBluetoothDevice(device_id);
387 } 417 }
388 418
389 void HandleButtonPressed(views::Button* sender, 419 void HandleButtonPressed(views::Button* sender,
390 const ui::Event& event) override { 420 const ui::Event& event) override {
391 if (MaterialDesignController::IsSystemTrayMenuMaterial()) { 421 if (MaterialDesignController::IsSystemTrayMenuMaterial()) {
392 // TODO(fukino): Make the toggle button functional.
393 if (sender == toggle_) 422 if (sender == toggle_)
394 toggle_->SetIsOn(toggle_->is_on(), true); 423 WmShell::Get()->system_tray_delegate()->ToggleBluetooth();
424 else
425 NOTREACHED();
395 return; 426 return;
396 } 427 }
397 428
398 SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate(); 429 SystemTrayDelegate* delegate = WmShell::Get()->system_tray_delegate();
399 if (sender == toggle_bluetooth_) 430 if (sender == toggle_bluetooth_)
400 delegate->ToggleBluetooth(); 431 delegate->ToggleBluetooth();
401 else 432 else
402 NOTREACHED(); 433 NOTREACHED();
403 } 434 }
404 435
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
511 detailed_->Update(); 542 detailed_->Update();
512 } 543 }
513 544
514 void TrayBluetooth::OnBluetoothDiscoveringChanged() { 545 void TrayBluetooth::OnBluetoothDiscoveringChanged() {
515 if (!detailed_) 546 if (!detailed_)
516 return; 547 return;
517 detailed_->Update(); 548 detailed_->Update();
518 } 549 }
519 550
520 } // namespace ash 551 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | ash/common/system/tray/system_tray_delegate.h » ('j') | ash/resources/vector_icons/system_menu_computer.icon » ('J')

Powered by Google App Engine
This is Rietveld 408576698