• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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