emailservices/nmclientapi/src/nmapienvelopelisting_p.cpp
changeset 54 997a02608b3a
parent 30 759dc5235cdb
--- a/emailservices/nmclientapi/src/nmapienvelopelisting_p.cpp	Wed Jun 23 18:00:21 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapienvelopelisting_p.cpp	Tue Jul 06 14:04:34 2010 +0300
@@ -15,77 +15,76 @@
  *
  */
 
-#include "emailtrace.h"
-
-#include "nmapiengine.h"
-#include "nmapienvelopelisting_p.h"
-
-#include <nmapimailbox.h>
-#include <nmapimessageenvelope.h>
+#include "nmapiheaders.h"
 
 
 
 namespace EmailClientApi
 {
-NmApiEnvelopeListingPrivate::NmApiEnvelopeListingPrivate(QObject *parent) :
-    QObject(parent), mEngine(NULL)
+NmApiEnvelopeListingPrivate::NmApiEnvelopeListingPrivate(const quint64 folderId, const quint64 mailboxId, QObject *parent)
+:QObject(parent),
+mFolderId(folderId), 
+mMailboxId(mailboxId), 
+mIsRunning(false),
+mEngine(NULL)
 {
     NM_FUNCTION;
+    mEngine = NmApiEngine::instance();
+    Q_CHECK_PTR(mEngine);
 }
 
 NmApiEnvelopeListingPrivate::~NmApiEnvelopeListingPrivate()
 {
     NM_FUNCTION;
-    
-    releaseEngine();
+    NmApiEngine::releaseInstance(mEngine);
 }
 
-/*!
-   \brief It initialize engine for email operations. 
+/*! 
+   \brief Fills envelopes to the input parameter.
    
-   When use initializeEngine need to remember release it.
-   It return value if initialization go good.
-   \sa releaseEngine 
+    Caller gets ownership of envelopes. Returns true if results were available.
  */
-bool NmApiEnvelopeListingPrivate::initializeEngine()
+bool NmApiEnvelopeListingPrivate::envelopes(QList<EmailClientApi::NmApiMessageEnvelope> &envelopes)
 {
     NM_FUNCTION;
-    
-    mEngine = NmApiEngine::instance();
-    return mEngine ? true : false;
+    bool ret(mIsRunning);
+    envelopes.clear();
+    while (!mEnvelopes.isEmpty()) {
+        envelopes << mEnvelopes.takeFirst();
+    }
+    mIsRunning = false;
+    return ret;
 }
 
 /*!
-   \brief It release engine for email operations.
+   \brief It fetches envelopes from engine. 
+   
+   Because it uses NmApiMessageEnvelope with sharedData we don't need care about release memory.
    
-   \sa initializeEngine
+   \return Count of envelopes 
  */
-void NmApiEnvelopeListingPrivate::releaseEngine()
+qint32 NmApiEnvelopeListingPrivate::listEnvelopes()
 {
     NM_FUNCTION;
-    
-    NmApiEngine::releaseInstance(mEngine);
+    mIsRunning = true;
+    mEnvelopes.clear();
+    mEngine->listEnvelopes(mMailboxId, mFolderId, mEnvelopes);
+    return mEnvelopes.count();
 }
-
 /*!
-   \brief It grab envelopes from engine. 
-   
-   When it start grabing, it release all old.
-   Because it uses NmApiMessageEnvelope with sharedData we don't need care about release memory.
-   
-   \return Count of envelopes or "-1" if there is no engine initialised
+   \brief Return info if listing is running
  */
-qint32 NmApiEnvelopeListingPrivate::grabEnvelopes()
+bool NmApiEnvelopeListingPrivate::isRunning() const
 {
-    NM_FUNCTION;
-    
-    if(!mEngine){
-        return -1;
-    }
-    
+    return mIsRunning;
+}
+/*!
+   \brief Clears list of envelopes.
+ */
+void NmApiEnvelopeListingPrivate::cancel() 
+{
+    mIsRunning = false;
     mEnvelopes.clear();
-    mEngine->listEnvelopes(mailboxId, folderId, mEnvelopes);
-    return mEnvelopes.count();
 }
 }