00001
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"