// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef ATHENA_WM_OVERVIEW_TOOLBAR_H_ #define ATHENA_WM_OVERVIEW_TOOLBAR_H_ #include "base/macros.h" #include "base/memory/scoped_ptr.h" #include "ui/gfx/geometry/rect.h" namespace aura { class Window; } namespace gfx { class Transform; } namespace ui { class GestureEvent; } namespace athena { class ActionButton; // Responsible for showing action-buttons at the right edge of the screen during // overview mode. class OverviewToolbar { public: enum ActionType { ACTION_TYPE_NONE, ACTION_TYPE_CLOSE, ACTION_TYPE_SPLIT, }; explicit OverviewToolbar(aura::Window* container); virtual ~OverviewToolbar(); ActionType current_action() const { return current_action_; } // Returns the action the gesture-event is targeting. ActionType GetHighlightAction(const ui::GestureEvent& event) const; void SetHighlightAction(ActionType action); void ShowActionButtons(); void HideActionButtons(); void DisableAction(ActionType action); private: void ToggleActionButtonsVisibility(); bool IsActionEnabled(ActionType action) const; bool IsEventOverButton(ActionButton* button, const ui::GestureEvent& event) const; gfx::Transform ComputeTransformFor(ActionButton* button) const; void TransformButton(ActionButton* button); bool shown_; uint64_t disabled_action_bitfields_; scoped_ptr close_; scoped_ptr split_; ActionType current_action_; const gfx::Rect container_bounds_; DISALLOW_COPY_AND_ASSIGN(OverviewToolbar); }; } // namespace athena #endif // ATHENA_WM_OVERVIEW_TOOLBAR_H_