emailservices/nmclientapi/src/nmapifolderlisting_p.cpp
changeset 54 997a02608b3a
parent 30 759dc5235cdb
--- 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();
+}
+}
+