1 /* 2 * This source file is part of MyGUI. For the latest info, see http://mygui.info/ 3 * Distributed under the MIT License 4 * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT) 5 */ 6 7 #ifndef MYGUI_CONTROLLER_REPEATCLICK_H_ 8 #define MYGUI_CONTROLLER_REPEATCLICK_H_ 9 10 #include "MyGUI_Prerequest.h" 11 #include "MyGUI_Delegate.h" 12 #include "MyGUI_Types.h" 13 #include "MyGUI_WidgetDefines.h" 14 #include "MyGUI_ControllerItem.h" 15 16 17 namespace MyGUI 18 { 19 20 /** This controller can be used to repeatedly trigger an event at specific time steps. */ 21 class ControllerRepeatClick : 22 public ControllerItem 23 { 24 MYGUI_RTTI_DERIVED( ControllerRepeatClick ) 25 26 public: 27 ControllerRepeatClick(); 28 29 /** Change initial delay and time step 30 @param init The delay before the first event will be triggered. 31 @param step The delay after each event before the next event is triggered. 32 */ 33 void setRepeat(float init, float step); 34 35 bool addTime(Widget* _widget, float _time) override; 36 void prepareItem(Widget* _widget) override; 37 void setProperty(const std::string& _key, const std::string& _value) override; 38 39 typedef delegates::CMultiDelegate2<Widget*, ControllerItem*> EventHandle_RepeatClick; 40 41 /** Event : Repeat Click.\n 42 signature : void method(MyGUI::Widget* _sender, MyGUI::ControllerItem *_controller)\n 43 */ 44 EventHandle_RepeatClick eventRepeatClick; 45 46 private: 47 float mInit; 48 float mStep; 49 float mTimeLeft; 50 }; 51 52 } 53 54 #endif 55