1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef ASH_SYSTEM_OVERVIEW_OVERVIEW_BUTTON_TRAY_H_ 6 #define ASH_SYSTEM_OVERVIEW_OVERVIEW_BUTTON_TRAY_H_ 7 8 #include "ash/ash_export.h" 9 #include "ash/shell_observer.h" 10 #include "ash/system/tray/tray_background_view.h" 11 12 namespace views { 13 class ImageView; 14 } 15 16 namespace ash { 17 18 // Status area tray for showing a toggle for Overview Mode. Overview Mode 19 // is equivalent to WindowSelectorController being in selection mode. 20 // This hosts a ShellObserver that listens for the activation of Maximize Mode 21 // This tray will only be visible while in this state. This tray does not 22 // provide any bubble view windows. 23 class ASH_EXPORT OverviewButtonTray : public TrayBackgroundView, 24 public ShellObserver { 25 public: 26 explicit OverviewButtonTray(StatusAreaWidget* status_area_widget); 27 virtual ~OverviewButtonTray(); 28 29 // Updates the tray's visibility based on the LoginStatus and the current 30 // state of MaximizeMode 31 virtual void UpdateAfterLoginStatusChange(user::LoginStatus status); 32 33 // ActionableView: 34 virtual bool PerformAction(const ui::Event& event) OVERRIDE; 35 36 // ShellObserver: 37 virtual void OnMaximizeModeStarted() OVERRIDE; 38 virtual void OnMaximizeModeEnded() OVERRIDE; 39 40 // TrayBackgroundView: 41 virtual bool ClickedOutsideBubble() OVERRIDE; 42 virtual base::string16 GetAccessibleNameForTray() OVERRIDE; 43 virtual void HideBubbleWithView( 44 const views::TrayBubbleView* bubble_view) OVERRIDE; 45 virtual void SetShelfAlignment(ShelfAlignment alignment) OVERRIDE; 46 47 private: 48 friend class OverviewButtonTrayTest; 49 50 // Creates a new border for the icon. The padding is determined based on the 51 // alignment of the shelf. 52 void SetIconBorderForShelfAlignment(); 53 54 // Sets the icon to visible if maximize mode is enabled and 55 // WindowSelectorController::CanSelect. 56 void UpdateIconVisibility(); 57 58 // Weak pointer, will be parented by TrayContainer for its lifetime. 59 views::ImageView* icon_; 60 61 DISALLOW_COPY_AND_ASSIGN(OverviewButtonTray); 62 }; 63 64 } // namespace ash 65 66 #endif // ASH_SYSTEM_OVERVIEW_OVERVIEW_BUTTON_TRAY_H_ 67