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_SHELF_APP_LIST_BUTTON_H_ 6#define ASH_SHELF_APP_LIST_BUTTON_H_ 7 8#include "ui/views/controls/button/image_button.h" 9 10namespace ash { 11class ShelfButtonHost; 12class ShelfWidget; 13 14// Button used for the AppList icon on the shelf. 15class AppListButton : public views::ImageButton { 16 public: 17 // Bounds size (inset) required for the app icon image (in pixels). 18 static const int kImageBoundsSize; 19 20 AppListButton(views::ButtonListener* listener, 21 ShelfButtonHost* host, 22 ShelfWidget* shelf_widget); 23 virtual ~AppListButton(); 24 25 bool draw_background_as_active() { 26 return draw_background_as_active_; 27 } 28 29 protected: 30 // views::ImageButton overrides: 31 virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE; 32 virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE; 33 virtual void OnMouseCaptureLost() OVERRIDE; 34 virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE; 35 virtual void OnMouseMoved(const ui::MouseEvent& event) OVERRIDE; 36 virtual void OnMouseEntered(const ui::MouseEvent& event) OVERRIDE; 37 virtual void OnMouseExited(const ui::MouseEvent& event) OVERRIDE; 38 virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; 39 virtual void GetAccessibleState(ui::AXViewState* state) OVERRIDE; 40 41 // ui::EventHandler overrides: 42 virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; 43 44 private: 45 // Toggles the active state for painting the background and schedules a paint. 46 void SetDrawBackgroundAsActive(bool draw_background_as_active); 47 48 // True if the background should render as active, regardless of the state of 49 // the application list. 50 bool draw_background_as_active_; 51 52 // True if touch view feedback command line flag has been enabled. When 53 // enabled touch gestures will toggle rendering the background as active. 54 bool touch_feedback_enabled_; 55 56 ShelfButtonHost* host_; 57 // Reference to the shelf widget containing this button, owned by the 58 // root window controller. 59 ShelfWidget* shelf_widget_; 60 61 DISALLOW_COPY_AND_ASSIGN(AppListButton); 62}; 63 64} // namespace ash 65 66#endif // ASH_SHELF_APP_LIST_BUTTON_H_ 67