--- a/emailservices/nmclientapi/src/nmapieventnotifier_p.cpp Tue Jun 29 17:12:28 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapieventnotifier_p.cpp Fri Jul 02 15:55:16 2010 +0300
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+ * Copyright (c) 2009 - 2010 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -19,6 +19,8 @@
namespace EmailClientApi
{
+const quint32 IntervalEmitingSignals = 10000;
+
/*!
Constructor
*/
@@ -26,6 +28,11 @@
QObject(parent), mEmitSignals(NULL), mEngine(NULL), mIsRunning(false)
{
NM_FUNCTION;
+ mEmitSignals = new QTimer(this);
+ mEmitSignals->setInterval(IntervalEmitingSignals);
+ connect(mEmitSignals, SIGNAL(timeout()), this, SIGNAL(
+ timedOut()));
+ mEngine = NmApiEngine::instance();
}
/*!
@@ -34,41 +41,65 @@
NmApiEventNotifierPrivate::~NmApiEventNotifierPrivate()
{
NM_FUNCTION;
+ mEmitSignals->stop();
+ NmApiEngine::releaseInstance(mEngine);
}
/*!
- \brief It initialize engine for email operations.
+ Returns true if the
+ */
+bool NmApiEventNotifierPrivate::isRunning() const
+{
+ return mIsRunning;
+}
+
+/*!
+ Start monitoring email events
- When use initializeEngine need to remember release it.
- It return value if initialization go good.
- \sa releaseEngine
- \return Return true if engine works.
+ \return Value tells about monitoring system running
*/
-bool NmApiEventNotifierPrivate::initializeEngine()
+bool NmApiEventNotifierPrivate::start()
{
NM_FUNCTION;
- if (!mEngine) {
- mEngine = NmApiEngine::instance();
+ bool result(false);
+
+ if (mIsRunning) {
+ result = true;
}
+ else {
+ qRegisterMetaType<QList<quint64> > ("QList<quint64>");
+ qRegisterMetaType<NmApiMessage> ("NmApiMessage");
- return mEngine ? true : false;
+ connect(mEngine, SIGNAL(emailStoreEvent(NmApiMessage)), this,
+ SLOT(emailStoreEvent(NmApiMessage)));
+
+ mEngine->startCollectingEvents();
+
+ mEmitSignals->start();
+ mIsRunning = true;
+ result = true;
+ }
+ return result;
+}
+/*!
+ \brief Stop listening events.
+ */
+void NmApiEventNotifierPrivate::stop()
+{
+ mIsRunning = false;
+ mEmitSignals->stop();
+ disconnect(mEngine, SIGNAL(emailStoreEvent(NmApiMessage)), this,
+ SLOT(emailStoreEvent(NmApiMessage)));
}
/*!
- \brief It release engine for email operations.
-
- \sa initializeEngine
+ Returns event buffer, after function call the buffer is empty
*/
-void NmApiEventNotifierPrivate::releaseEngine()
+void NmApiEventNotifierPrivate::events(QList<NmApiMessage> &events)
{
- NM_FUNCTION;
-
- if (mIsRunning) {
- cancel();
- }
- else {
- NmApiEngine::releaseInstance(mEngine);
+ while (!mBufferOfEvents.isEmpty()) {
+ events << mBufferOfEvents.takeFirst();
}
}
@@ -82,7 +113,6 @@
void NmApiEventNotifierPrivate::emailStoreEvent(const NmApiMessage &events)
{
NM_FUNCTION;
-
mBufferOfEvents << events;
}
@@ -97,12 +127,8 @@
mIsRunning = false;
mEmitSignals->stop();
- if (mEngine) {
- disconnect(mEngine, SIGNAL(emailStoreEvent(NmApiMessage)), this,
+ disconnect(mEngine, SIGNAL(emailStoreEvent(NmApiMessage)), this,
SLOT(emailStoreEvent(NmApiMessage)));
- }
-
- releaseEngine();
mBufferOfEvents.clear();
}