// -*- Mode: C++; indent-tabs-mode: nil; tab-width: 2 -*- /* * Copyright (C) 2011 Canonical Ltd * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 3 as * published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authored by: Gordon Allott */ #ifndef PLACES_TILE_H #define PLACES_TILE_H #include #include #include #include #include #include "StaticCairoText.h" #include "Introspectable.h" #include #include #include #include class PlacesTile : public nux::View { public: typedef enum { STATE_DEFAULT, STATE_HOVER, STATE_PRESSED, STATE_ACTIVATED, } TileState; PlacesTile (NUX_FILE_LINE_PROTO); ~PlacesTile (); // mainly for testing virtual void SetState (TileState state); virtual TileState GetState (); sigc::signal sigClick; sigc::signal sigToggled; sigc::signal sigStateChanged; sigc::signal MouseDown; sigc::signal MouseUp; sigc::signal MouseEnter; sigc::signal MouseLeave; sigc::signal MouseClick; protected: virtual long ProcessEvent (nux::IEvent &ievent, long TraverseInfo, long ProcessEventInfo); virtual void Draw (nux::GraphicsEngine &GfxContext, bool force_draw); virtual void DrawContent (nux::GraphicsEngine &GfxContext, bool force_draw); virtual void PostDraw (nux::GraphicsEngine &GfxContext, bool force_draw); virtual void PreLayoutManagement (); virtual long PostLayoutManagement (long LayoutResult); void RecvMouseEnter (int x, int y, unsigned long button_flags, unsigned long key_flags); void RecvMouseLeave (int x, int y, unsigned long button_flags, unsigned long key_flags); void RecvMouseDown (int x, int y, unsigned long button_flags, unsigned long key_flags); void RecvMouseUp (int x, int y, unsigned long button_flags, unsigned long key_flags); void RecvMouseClick (int x, int y, unsigned long button_flags, unsigned long key_flags); void RecvMouseMove (int x, int y, int dx, int dy, unsigned long button_flags, unsigned long key_flags); //void RecvMouseDrag (int x, int y, int dx, int dy, unsigned long button_flags, unsigned long key_flags); sigc::signal sigMouseEnter; sigc::signal sigMouseLeave; sigc::signal sigMouseReleased; sigc::signal sigMouseClick; sigc::signal sigMouseDrag; TileState _state; nux::Layout *_layout; nux::BaseTexture *_hilight_background; nux::View *_hilight_view; nux::TextureLayer *_hilight_layer; void UpdateBackground (); void DrawRoundedRectangle (cairo_t* cr, double aspect, double x, double y, double cornerRadius, double width, double height); private: int _last_width; int _last_height; }; #endif // PLACE_TILE_H