overview_toolbar.h revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
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 12namespace aura { 13class Window; 14} 15 16namespace gfx { 17class Transform; 18} 19 20namespace ui { 21class GestureEvent; 22} 23 24namespace athena { 25 26class ActionButton; 27 28// Responsible for showing action-buttons at the right edge of the screen during 29// overview mode. 30class 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 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