Home | History | Annotate | Download | only in overview
      1 // Copyright 2013 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_WM_OVERVIEW_WINDOW_SELECTOR_CONTROLLER_H_
      6 #define ASH_WM_OVERVIEW_WINDOW_SELECTOR_CONTROLLER_H_
      7 
      8 #include <list>
      9 #include <vector>
     10 
     11 #include "ash/ash_export.h"
     12 #include "ash/wm/overview/window_selector.h"
     13 #include "ash/wm/overview/window_selector_delegate.h"
     14 #include "base/basictypes.h"
     15 #include "base/memory/scoped_ptr.h"
     16 #include "base/time/time.h"
     17 #include "ui/aura/window_observer.h"
     18 
     19 namespace aura {
     20 class Window;
     21 }
     22 
     23 namespace ash {
     24 class WindowSelector;
     25 class WindowSelectorTest;
     26 
     27 // Manages a window selector which displays an overview of all windows and
     28 // allows selecting a window to activate it.
     29 class ASH_EXPORT WindowSelectorController
     30     : public WindowSelectorDelegate {
     31  public:
     32   WindowSelectorController();
     33   virtual ~WindowSelectorController();
     34 
     35   // Returns true if selecting windows in an overview is enabled. This is false
     36   // at certain times, such as when the lock screen is visible.
     37   static bool CanSelect();
     38 
     39   // Enters overview mode. This is essentially the window cycling mode however
     40   // not released on releasing the alt key and allows selecting with the mouse
     41   // or touch rather than keypresses.
     42   void ToggleOverview();
     43 
     44   // Returns true if window selection mode is active.
     45   bool IsSelecting();
     46 
     47   // WindowSelectorDelegate:
     48   virtual void OnSelectionEnded() OVERRIDE;
     49 
     50  private:
     51   friend class WindowSelectorTest;
     52 
     53   // Dispatched when window selection begins.
     54   void OnSelectionStarted();
     55 
     56   scoped_ptr<WindowSelector> window_selector_;
     57   base::Time last_selection_time_;
     58 
     59   DISALLOW_COPY_AND_ASSIGN(WindowSelectorController);
     60 };
     61 
     62 }  // namespace ash
     63 
     64 #endif  // ASH_WM_OVERVIEW_WINDOW_SELECTOR_CONTROLLER_H_
     65