diff -r bf7eb7911fc5 -r 997a02608b3a emailservices/nmclientapi/src/nmapieventnotifier_p.cpp --- a/emailservices/nmclientapi/src/nmapieventnotifier_p.cpp Wed Jun 23 18:00:21 2010 +0300 +++ b/emailservices/nmclientapi/src/nmapieventnotifier_p.cpp Tue Jul 06 14:04:34 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" @@ -15,15 +15,12 @@ * */ -#include "emailtrace.h" - -#include "nmapiengine.h" -#include "nmapieventnotifier_p.h" - -#include +#include "nmapiheaders.h" namespace EmailClientApi { +const quint32 IntervalEmitingSignals = 10000; + /*! Constructor */ @@ -31,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(); } /*! @@ -39,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"); + qRegisterMetaType ("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 &events) { - NM_FUNCTION; - - if (mIsRunning) { - cancel(); - } - else { - NmApiEngine::releaseInstance(mEngine); + while (!mBufferOfEvents.isEmpty()) { + events << mBufferOfEvents.takeFirst(); } } @@ -87,7 +113,6 @@ void NmApiEventNotifierPrivate::emailStoreEvent(const NmApiMessage &events) { NM_FUNCTION; - mBufferOfEvents << events; } @@ -102,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(); }