OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/palette/palette_tray.h" | 5 #include "ash/common/system/chromeos/palette/palette_tray.h" |
6 | 6 |
7 #include "ash/common/shelf/shelf_constants.h" | 7 #include "ash/common/shelf/shelf_constants.h" |
8 #include "ash/common/shelf/wm_shelf.h" | 8 #include "ash/common/shelf/wm_shelf.h" |
9 #include "ash/common/shelf/wm_shelf_util.h" | 9 #include "ash/common/shelf/wm_shelf_util.h" |
10 #include "ash/common/shell_window_ids.h" | 10 #include "ash/common/shell_window_ids.h" |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 const int kIconSize = 20; | 62 const int kIconSize = 20; |
63 | 63 |
64 // Creates a separator. | 64 // Creates a separator. |
65 views::Separator* CreateSeparator(views::Separator::Orientation orientation) { | 65 views::Separator* CreateSeparator(views::Separator::Orientation orientation) { |
66 views::Separator* separator = | 66 views::Separator* separator = |
67 new views::Separator(views::Separator::HORIZONTAL); | 67 new views::Separator(views::Separator::HORIZONTAL); |
68 separator->SetColor(ash::kBorderDarkColor); | 68 separator->SetColor(ash::kBorderDarkColor); |
69 return separator; | 69 return separator; |
70 } | 70 } |
71 | 71 |
| 72 // Returns true if we are in a user session that can show the stylus tools. |
| 73 bool IsInUserSession() { |
| 74 SessionStateDelegate* session_state_delegate = |
| 75 WmShell::Get()->GetSessionStateDelegate(); |
| 76 return !session_state_delegate->IsUserSessionBlocked() && |
| 77 session_state_delegate->GetSessionState() == |
| 78 SessionStateDelegate::SESSION_STATE_ACTIVE && |
| 79 WmShell::Get()->system_tray_delegate()->GetUserLoginStatus() != |
| 80 LoginStatus::KIOSK_APP; |
| 81 } |
| 82 |
72 class TitleView : public views::View, public views::ButtonListener { | 83 class TitleView : public views::View, public views::ButtonListener { |
73 public: | 84 public: |
74 explicit TitleView(PaletteTray* palette_tray) : palette_tray_(palette_tray) { | 85 explicit TitleView(PaletteTray* palette_tray) : palette_tray_(palette_tray) { |
75 auto& rb = ui::ResourceBundle::GetSharedInstance(); | 86 auto& rb = ui::ResourceBundle::GetSharedInstance(); |
76 | 87 |
77 auto* box_layout = | 88 auto* box_layout = |
78 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0); | 89 new views::BoxLayout(views::BoxLayout::kHorizontal, 0, 0, 0); |
79 SetLayoutManager(box_layout); | 90 SetLayoutManager(box_layout); |
80 | 91 |
81 views::Label* text_label = | 92 views::Label* text_label = |
(...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
240 host->AddChildView(view.view); | 251 host->AddChildView(view.view); |
241 } | 252 } |
242 | 253 |
243 void PaletteTray::SessionStateChanged( | 254 void PaletteTray::SessionStateChanged( |
244 SessionStateDelegate::SessionState state) { | 255 SessionStateDelegate::SessionState state) { |
245 UpdateIconVisibility(); | 256 UpdateIconVisibility(); |
246 } | 257 } |
247 | 258 |
248 void PaletteTray::OnLockStateChanged(bool locked) { | 259 void PaletteTray::OnLockStateChanged(bool locked) { |
249 UpdateIconVisibility(); | 260 UpdateIconVisibility(); |
| 261 |
| 262 // The user can eject the stylus during the lock screen transition, which will |
| 263 // open the palette. Make sure to close it if that happens. |
| 264 if (locked) |
| 265 HidePalette(); |
250 } | 266 } |
251 | 267 |
252 void PaletteTray::ClickedOutsideBubble() { | 268 void PaletteTray::ClickedOutsideBubble() { |
253 if (num_actions_in_bubble_ == 0) | 269 if (num_actions_in_bubble_ == 0) |
254 RecordPaletteOptionsUsage(PaletteTrayOptions::PALETTE_CLOSED_NO_ACTION); | 270 RecordPaletteOptionsUsage(PaletteTrayOptions::PALETTE_CLOSED_NO_ACTION); |
255 HidePalette(); | 271 HidePalette(); |
256 } | 272 } |
257 | 273 |
258 base::string16 PaletteTray::GetAccessibleNameForTray() { | 274 base::string16 PaletteTray::GetAccessibleNameForTray() { |
259 return l10n_util::GetStringUTF16(IDS_ASH_STYLUS_TOOLS_TITLE); | 275 return l10n_util::GetStringUTF16(IDS_ASH_STYLUS_TOOLS_TITLE); |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
384 } | 400 } |
385 | 401 |
386 void PaletteTray::UpdateTrayIcon() { | 402 void PaletteTray::UpdateTrayIcon() { |
387 icon_->SetImage(CreateVectorIcon( | 403 icon_->SetImage(CreateVectorIcon( |
388 palette_tool_manager_->GetActiveTrayIcon( | 404 palette_tool_manager_->GetActiveTrayIcon( |
389 palette_tool_manager_->GetActiveTool(ash::PaletteGroup::MODE)), | 405 palette_tool_manager_->GetActiveTool(ash::PaletteGroup::MODE)), |
390 kShelfIconSize, kShelfIconColor)); | 406 kShelfIconSize, kShelfIconColor)); |
391 } | 407 } |
392 | 408 |
393 void PaletteTray::OnStylusStateChanged(ui::StylusState stylus_state) { | 409 void PaletteTray::OnStylusStateChanged(ui::StylusState stylus_state) { |
394 if (!WmShell::Get()->palette_delegate()->ShouldAutoOpenPalette()) | 410 PaletteDelegate* palette_delegate = WmShell::Get()->palette_delegate(); |
| 411 |
| 412 // Don't do anything if the palette should not be shown or if the user has |
| 413 // disabled it all-together. |
| 414 if (!IsInUserSession() || !palette_delegate->ShouldShowPalette()) |
395 return; | 415 return; |
396 | 416 |
397 if (stylus_state == ui::StylusState::REMOVED && !bubble_) { | 417 // Auto show/hide the palette if allowed by the user. |
398 is_bubble_auto_opened_ = true; | 418 if (palette_delegate->ShouldAutoOpenPalette()) { |
399 ShowPalette(); | 419 if (stylus_state == ui::StylusState::REMOVED && !bubble_) { |
400 } else if (stylus_state == ui::StylusState::INSERTED && bubble_) { | 420 is_bubble_auto_opened_ = true; |
401 HidePalette(); | 421 ShowPalette(); |
| 422 } else if (stylus_state == ui::StylusState::INSERTED && bubble_) { |
| 423 HidePalette(); |
| 424 } |
| 425 } |
| 426 |
| 427 // Disable any active modes if the stylus has been inserted. |
| 428 if (stylus_state == ui::StylusState::INSERTED) |
| 429 palette_tool_manager_->DisableActiveTool(PaletteGroup::MODE); |
| 430 } |
| 431 |
| 432 void PaletteTray::OnPaletteEnabledPrefChanged(bool enabled) { |
| 433 if (!enabled) { |
| 434 SetVisible(false); |
| 435 palette_tool_manager_->DisableActiveTool(PaletteGroup::MODE); |
| 436 } else { |
| 437 UpdateIconVisibility(); |
402 } | 438 } |
403 } | 439 } |
404 | 440 |
405 void PaletteTray::OnPaletteEnabledPrefChanged(bool enabled) { | |
406 if (!enabled) | |
407 SetVisible(false); | |
408 else | |
409 UpdateIconVisibility(); | |
410 } | |
411 | |
412 void PaletteTray::UpdateIconVisibility() { | 441 void PaletteTray::UpdateIconVisibility() { |
413 SessionStateDelegate* session_state_delegate = | 442 SetVisible(IsInUserSession()); |
414 WmShell::Get()->GetSessionStateDelegate(); | |
415 | |
416 SetVisible(!session_state_delegate->IsScreenLocked() && | |
417 session_state_delegate->GetSessionState() == | |
418 SessionStateDelegate::SESSION_STATE_ACTIVE && | |
419 WmShell::Get()->system_tray_delegate()->GetUserLoginStatus() != | |
420 LoginStatus::KIOSK_APP); | |
421 } | 443 } |
422 | 444 |
423 } // namespace ash | 445 } // namespace ash |
OLD | NEW |