emailservices/nmclientapi/src/nmapimailboxlisting_p.cpp
changeset 76 38bf5461e270
parent 48 10eaf342f539
--- a/emailservices/nmclientapi/src/nmapimailboxlisting_p.cpp	Thu Sep 30 11:43:07 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimailboxlisting_p.cpp	Thu Oct 14 17:33:43 2010 +0300
@@ -17,70 +17,74 @@
 
 #include "nmapiheaders.h"
 
-
 namespace EmailClientApi
 {
-NmApiMailboxListingPrivate::NmApiMailboxListingPrivate(QObject *parent) :
-    QObject(parent), mNmApiEngine(NULL)
+NmApiMailboxListingPrivate::NmApiMailboxListingPrivate(QObject *parent) 
+:QObject(parent), 
+mEngine(NULL), 
+mIsRunning(false)
 {
     NM_FUNCTION;
+    mEngine = NmApiEngine::instance();
 }
 
 NmApiMailboxListingPrivate::~NmApiMailboxListingPrivate()
 {
     NM_FUNCTION;
-}
-
-/*!
-   \brief It initialize engine for email operations. 
-   
-   When use initializeEngine need to remember release it.
-   It return value if initialization go good.
-   \sa releaseEngine 
-   \return Return true if engine is good initilialized.
- */
-bool NmApiMailboxListingPrivate::initializeEngine()
-{
-    NM_FUNCTION;
-    
-    if (!mNmApiEngine) {
-        mNmApiEngine = NmApiEngine::instance();
-    }
-
-    return mNmApiEngine ? true : false;
+    NmApiEngine::releaseInstance(mEngine);
 }
 
 /*!
-   \brief It release engine for email operations.
-   
-   \sa initializeEngine
+   \brief Get mailboxes from engine.    
+   \return Count of mailboxes 
  */
-void NmApiMailboxListingPrivate::releaseEngine()
+qint32 NmApiMailboxListingPrivate::listMailboxes()
 {
     NM_FUNCTION;
+    mIsRunning = true;
+    mMailboxes.clear();
+    mEngine->listMailboxes(mMailboxes);
+    return mMailboxes.count();
+}
+
+/*! 
+   \brief Returns results after mailboxesListed signal is received.
+   
+    Caller gets ownership of mailboxes. Returns true if results were available.
+    It clears list of mailboxes (in private members) after be called.
+    It also at start clear inputlist of NmApiMailbox.
     
-    NmApiEngine::releaseInstance(mNmApiEngine);
+    \return Return true if results were avaible
+    \param mailboxes List of mailboxes to filled. On start is cleared. 
+ */
+bool NmApiMailboxListingPrivate::mailboxes(QList<NmApiMailbox> &mailboxes)
+{
+    mailboxes.clear();
+
+
+    bool ret(mIsRunning);
+    mailboxes.clear();
+    while (!mMailboxes.isEmpty()) {
+        mailboxes << mMailboxes.takeFirst();
+    }
+    mIsRunning = false;
+    return ret;
+}
+/*!
+   \brief Return info if listing is running
+ */
+bool NmApiMailboxListingPrivate::isRunning() const
+{
+    NM_FUNCTION;
+    return mIsRunning;
 }
 
 /*!
-   \brief It grab mailboxes from engine. 
-   
-   When it start grabing, it release all old.
-   Because it uses NmApiMailbox with sharedData we don't need care about release memory.
-   
-   \return Count of mailboxes or "-1" if there is no engine
+   \brief Clears list of mailboxes.
  */
-qint32 NmApiMailboxListingPrivate::grabMailboxes()
+void NmApiMailboxListingPrivate::cancel() 
 {
-    NM_FUNCTION;
-    
-    if (!mNmApiEngine) {
-        return -1;
-    }
-    
+    mIsRunning = false;
     mMailboxes.clear();
-
-    mNmApiEngine->listMailboxes(mMailboxes);
-    return mMailboxes.count();
 }
 }