// -*- 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: Neil Jagdish Patel */ #ifndef PLACES_SEARCH_BAR_SPINNER_H #define PLACES_SEARCH_BAR_SPINNER_H #include #include #include #include #include #include "Introspectable.h" enum SpinnerState { STATE_READY, STATE_SEARCHING, STATE_CLEAR }; class PlacesSearchBarSpinner : public Introspectable, public nux::View { NUX_DECLARE_OBJECT_TYPE (PlacesSearchBarSpinner, nux::View); public: PlacesSearchBarSpinner (); ~PlacesSearchBarSpinner (); long ProcessEvent (nux::IEvent &ievent, long TraverseInfo, long ProcessEventInfo); void Draw (nux::GraphicsEngine& GfxContext, bool force_draw); void DrawContent (nux::GraphicsEngine &GfxContext, bool force_draw); void SetState (SpinnerState state); protected: // Introspectable methods const gchar * GetName (); void AddProperties (GVariantBuilder *builder); static gboolean OnFrame (PlacesSearchBarSpinner *self); private: private: SpinnerState _state; nux::BaseTexture *_search_ready; nux::BaseTexture *_clear_full; nux::BaseTexture *_clear_alone; nux::BaseTexture *_clear_spinner; nux::Matrix4 _2d_rotate; float _rotation; guint32 _spinner_timeout; }; #endif