--- 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 <nmapifolder.h>
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<EmailClientApi::NmApiFolder> &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();
+}
+}
+