1// 2// This file is part of the aMule Project. 3// 4// Copyright (c) 2003-2011 aMule Team ( admin@amule.org / http://www.amule.org ) 5// 6// Any parts of this program derived from the xMule, lMule or eMule project, 7// or contributed by third-party developers are copyrighted by their 8// respective authors. 9// 10// This program is free software; you can redistribute it and/or modify 11// it under the terms of the GNU General Public License as published by 12// the Free Software Foundation; either version 2 of the License, or 13// (at your option) any later version. 14// 15// This program is distributed in the hope that it will be useful, 16// but WITHOUT ANY WARRANTY; without even the implied warranty of 17// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18// GNU General Public License for more details. 19// 20// You should have received a copy of the GNU General Public License 21// along with this program; if not, write to the Free Software 22// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 23// 24 25#ifndef TIMER_H 26#define TIMER_H 27 28class wxEvtHandler; 29class CTimerThread; 30 31#include <wx/event.h> 32 33 34/** 35 * Replacement for wxTimer as it doesn't work on non-X builds 36 */ 37class CTimer 38{ 39public: 40 CTimer(wxEvtHandler *owner, int timerid = -1); 41 ~CTimer(); 42 43 /** 44 * Starts the timer. 45 * 46 * @param millisecs The frequency of events. 47 * @param oneShot Specifies if only one event should be produced. 48 */ 49 bool Start(int millisecs, bool oneShot = false); 50 51 /** 52 * Returns true if the timer is running. 53 */ 54 bool IsRunning() const; 55 56 /** 57 * Stops the timer. 58 * 59 * Note that this does not delete the actual thread 60 * immediatly, but no new events will be queued after 61 * calling this function. 62 */ 63 void Stop(); 64 65private: 66 CTimerThread* m_thread; 67 wxEvtHandler* m_owner; 68 int m_id; 69}; 70 71 72 73class CTimerEvent : public wxEvent 74{ 75public: 76 CTimerEvent(int id = 0); 77 78 virtual wxEvent* Clone() const; 79}; 80 81 82DECLARE_LOCAL_EVENT_TYPE(MULE_EVT_TIMER, -1) 83 84 85typedef void (wxEvtHandler::*MuleTimerEventFunction)(CTimerEvent&); 86 87#define EVT_MULE_TIMER(id, func) \ 88 DECLARE_EVENT_TABLE_ENTRY(MULE_EVT_TIMER, id, -1, \ 89 (wxObjectEventFunction) (wxEventFunction) \ 90 wxStaticCastEvent(MuleTimerEventFunction, &func), (wxObject*) NULL), 91 92#endif /* TIMER_H */ 93// File_checked_for_headers 94