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 ATHENA_WM_OVERVIEW_TOOLBAR_H_ 6 #define ATHENA_WM_OVERVIEW_TOOLBAR_H_ 7 8 #include "base/macros.h" 9 #include "base/memory/scoped_ptr.h" 10 #include "ui/gfx/geometry/rect.h" 11 12 namespace aura { 13 class Window; 14 } 15 16 namespace gfx { 17 class Transform; 18 } 19 20 namespace ui { 21 class GestureEvent; 22 } 23 24 namespace athena { 25 26 class ActionButton; 27 28 // Responsible for showing action-buttons at the right edge of the screen during 29 // overview mode. 30 class OverviewToolbar { 31 public: 32 enum ActionType { 33 ACTION_TYPE_NONE, 34 ACTION_TYPE_CLOSE, 35 ACTION_TYPE_SPLIT, 36 }; 37 38 explicit OverviewToolbar(aura::Window* container); 39 virtual ~OverviewToolbar(); 40 current_action()41 ActionType current_action() const { return current_action_; } 42 43 // Returns the action the gesture-event is targeting. 44 ActionType GetHighlightAction(const ui::GestureEvent& event) const; 45 46 void SetHighlightAction(ActionType action); 47 void ShowActionButtons(); 48 void HideActionButtons(); 49 50 void DisableAction(ActionType action); 51 52 private: 53 void ToggleActionButtonsVisibility(); 54 bool IsActionEnabled(ActionType action) const; 55 bool IsEventOverButton(ActionButton* button, 56 const ui::GestureEvent& event) const; 57 gfx::Transform ComputeTransformFor(ActionButton* button) const; 58 void TransformButton(ActionButton* button); 59 60 bool shown_; 61 uint64_t disabled_action_bitfields_; 62 scoped_ptr<ActionButton> close_; 63 scoped_ptr<ActionButton> split_; 64 ActionType current_action_; 65 const gfx::Rect container_bounds_; 66 67 DISALLOW_COPY_AND_ASSIGN(OverviewToolbar); 68 }; 69 70 } // namespace athena 71 72 #endif // ATHENA_WM_OVERVIEW_TOOLBAR_H_ 73