kmtimer.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "kmtimer.h"
00021 #include "kmfactory.h"
00022
00023 #include <kconfig.h>
00024
00025 KMTimer* KMTimer::m_self = 0;
00026
00027 KMTimer* KMTimer::self()
00028 {
00029 if (!m_self)
00030 {
00031 m_self = new KMTimer(KMFactory::self(), "InternalTimer");
00032 Q_CHECK_PTR(m_self);
00033 }
00034 return m_self;
00035 }
00036
00037 KMTimer::KMTimer(QObject *parent, const char *name)
00038 : QTimer(parent, name), m_count(0)
00039 {
00040 connect(this, SIGNAL(timeout()), SLOT(slotTimeout()));
00041 }
00042
00043 KMTimer::~KMTimer()
00044 {
00045 m_self = 0;
00046 }
00047
00048 void KMTimer::hold()
00049 {
00050 if ((m_count++) == 0)
00051 stop();
00052 }
00053
00054 void KMTimer::release()
00055 {
00056 releaseTimer(false);
00057 }
00058
00059 void KMTimer::release(bool do_emit)
00060 {
00061 releaseTimer(do_emit);
00062 }
00063
00064 void KMTimer::releaseTimer(bool do_emit)
00065 {
00066 m_count = QMAX(0, m_count-1);
00067 if (m_count == 0)
00068 {
00069 if (do_emit)
00070 emit timeout();
00071 startTimer();
00072 }
00073 }
00074
00075 void KMTimer::delay(int t)
00076 {
00077 startTimer(t);
00078 }
00079
00080 void KMTimer::slotTimeout()
00081 {
00082 startTimer();
00083 }
00084
00085 void KMTimer::startTimer(int t)
00086 {
00087 if (t == -1)
00088 {
00089 KConfig *conf = KMFactory::self()->printConfig();
00090 conf->setGroup("General");
00091 t = conf->readNumEntry("TimerDelay", 5) * 1000;
00092 }
00093 start(t, true);
00094 }
00095
00096 #include "kmtimer.moc"
|