diff -r bf7eb7911fc5 -r 997a02608b3a emailservices/nmclientapi/src/nmapifolderlisting_p.cpp --- a/emailservices/nmclientapi/src/nmapifolderlisting_p.cpp Wed Jun 23 18:00:21 2010 +0300 +++ b/emailservices/nmclientapi/src/nmapifolderlisting_p.cpp Tue Jul 06 14:04:34 2010 +0300 @@ -15,12 +15,8 @@ * */ -#include "emailtrace.h" +#include "nmapiheaders.h" -#include "nmapiengine.h" -#include "nmapifolderlisting_p.h" - -#include namespace EmailClientApi { @@ -28,10 +24,15 @@ /*! Constructor form NmApiFolderListingPrivate */ -NmApiFolderListingPrivate::NmApiFolderListingPrivate(QObject *parent) : - QObject(parent), mEngine(NULL) +NmApiFolderListingPrivate::NmApiFolderListingPrivate(quint64 mailboxId, QObject *parent) +:QObject(parent), +mMailboxId(mailboxId), +mEngine(NULL), +mIsRunning(false) { NM_FUNCTION; + mEngine = NmApiEngine::instance(); + Q_CHECK_PTR(mEngine); } /*! @@ -40,60 +41,59 @@ NmApiFolderListingPrivate::~NmApiFolderListingPrivate() { NM_FUNCTION; - - releaseEngine(); -} - -/*! - \brief It initialize engine for email operations. - - When use initializeEngine need to remember release it. - It return value if initialization go good. - \sa releaseEngine - */ -bool NmApiFolderListingPrivate::initializeEngine() -{ - NM_FUNCTION; - - if (!mEngine) { - mEngine = NmApiEngine::instance(); - } - - return mEngine ? true : false; -} - -/*! - \brief It release engine for email operations. - - \sa initializeEngine - */ -void NmApiFolderListingPrivate::releaseEngine() -{ - NM_FUNCTION; - NmApiEngine::releaseInstance(mEngine); } /*! - \brief It grab folders from engine. + \brief Fetch folders from engine. - When it start grabing, it release all old. Because it uses NmFolder with sharedData we don't need care about release memory. - \return Count of folders or "-1" if there is no engine initialised + \return Count of folders */ -qint32 NmApiFolderListingPrivate::grabFolders() +qint32 NmApiFolderListingPrivate::listFolders() { NM_FUNCTION; - - if (!mEngine) { - return -1; - } - + mIsRunning = true; mFolders.clear(); mEngine->listFolders(mMailboxId, mFolders); return mFolders.count(); } +/*! + \brief Returns results after listFolders is called. + + Caller gets ownership of messages. Returns true if results were available. + It clears list of folders after be called. + It also at start clear inputlist of NmFolder. + */ +bool NmApiFolderListingPrivate::folders(QList &folders) +{ + NM_FUNCTION; + bool ret(mIsRunning); + folders.clear(); + while (!mFolders.isEmpty()) { + folders << mFolders.takeFirst(); + } + mIsRunning = false; + return ret; } +/*! + \brief Return info if listing is running + */ +bool NmApiFolderListingPrivate::isRunning() const +{ + NM_FUNCTION; + return mIsRunning; +} +/*! + \brief Clears list of folders. + */ +void NmApiFolderListingPrivate::cancel() +{ + mIsRunning = false; + mFolders.clear(); +} +} +