emailservices/nmclientapi/src/nmapifolderlisting.cpp
changeset 54 997a02608b3a
parent 30 759dc5235cdb
equal deleted inserted replaced
53:bf7eb7911fc5 54:997a02608b3a
    13  *
    13  *
    14  * Description:
    14  * Description:
    15  *
    15  *
    16  */
    16  */
    17 
    17 
    18 #include "emailtrace.h"
    18 #include "nmapiheaders.h"
    19 
    19 
    20 #include <nmapifolderlisting.h>
       
    21 #include "nmapifolderlisting_p.h"
       
    22 
       
    23 #include <nmapimailbox.h>
       
    24 #include <nmapifolder.h>
       
    25 
    20 
    26 namespace EmailClientApi
    21 namespace EmailClientApi
    27 {
    22 {
    28 
    23 
    29 /*!
    24 /*!
    31  */
    26  */
    32 
    27 
    33 /*!
    28 /*!
    34    Constructor of class. It set start values.
    29    Constructor of class. It set start values.
    35  */
    30  */
    36 NmApiFolderListing::NmApiFolderListing(QObject *parent, const quint64 &nmMailboxId) :
    31 NmApiFolderListing::NmApiFolderListing(QObject *parent, const quint64 &mailboxId) :
    37     NmApiMessageTask(parent)
    32     NmApiMessageTask(parent)
    38 {
    33 {
    39     NM_FUNCTION;
    34     NM_FUNCTION;
    40     
    35     mFolderListing = new NmApiFolderListingPrivate(mailboxId, this);
    41     mFolderListing = new NmApiFolderListingPrivate(this);
       
    42     mFolderListing->mIsRunning = false;
       
    43     mFolderListing->mMailboxId = nmMailboxId;
       
    44 }
    36 }
    45 
    37 
    46 /*!
    38 /*!
    47    Destructor of class. It release engine to be safe if manual releasing won't work.
    39    Destructor of class. It release engine to be safe if manual releasing won't work.
    48  */
    40  */
    49 NmApiFolderListing::~NmApiFolderListing()
    41 NmApiFolderListing::~NmApiFolderListing()
    50 {
    42 {
    51     NM_FUNCTION;
    43     NM_FUNCTION;
    52     
       
    53     if (mFolderListing->mIsRunning) {
       
    54         mFolderListing->releaseEngine();
       
    55     }
       
    56 }
    44 }
    57 
    45 
    58 /*! 
    46 /*! 
    59    \brief Returns results after foldersListed signal is received.
    47    \brief Returns results after foldersListed signal is received.
    60    
    48    
    63     It also at start clear inputlist of NmFolder.
    51     It also at start clear inputlist of NmFolder.
    64  */
    52  */
    65 bool NmApiFolderListing::getFolders(QList<EmailClientApi::NmApiFolder> &folders)
    53 bool NmApiFolderListing::getFolders(QList<EmailClientApi::NmApiFolder> &folders)
    66 {
    54 {
    67     NM_FUNCTION;
    55     NM_FUNCTION;
    68     
    56     return mFolderListing->folders(folders);
    69     folders.clear();
       
    70     if (!mFolderListing->mIsRunning || mFolderListing->mFolders.isEmpty()) {
       
    71         return false;
       
    72     }
       
    73     folders = mFolderListing->mFolders;
       
    74     mFolderListing->mFolders.clear();
       
    75     return true;
       
    76 }
    57 }
    77 
    58 
    78 /*!
    59 /*!
    79    \brief Starts gathering folders list.
    60    \brief Starts gathering folders list.
    80    
    61    
    89    
    70    
    90  */
    71  */
    91 bool NmApiFolderListing::start()
    72 bool NmApiFolderListing::start()
    92 {
    73 {
    93     NM_FUNCTION;
    74     NM_FUNCTION;
    94     
    75     qint32 folderCount = mFolderListing->listFolders();
    95     if (mFolderListing->mIsRunning) {
       
    96         return true;
       
    97     }
       
    98 
       
    99     if (!mFolderListing->initializeEngine()) {
       
   100         QMetaObject::invokeMethod(this, "foldersListed", Qt::QueuedConnection, Q_ARG(qint32,
       
   101             (qint32) FolderListingFailed));
       
   102         return false;
       
   103     }
       
   104 
       
   105     qint32 folderCount = mFolderListing->grabFolders();
       
   106 
       
   107     mFolderListing->mIsRunning = true;
       
   108     QMetaObject::invokeMethod(this, "foldersListed", Qt::QueuedConnection,
    76     QMetaObject::invokeMethod(this, "foldersListed", Qt::QueuedConnection,
   109         Q_ARG(qint32, folderCount));
    77         Q_ARG(qint32, folderCount));
   110 
    78 
   111     return true;
    79     return true;
   112 }
    80 }
   120  */
    88  */
   121 void NmApiFolderListing::cancel()
    89 void NmApiFolderListing::cancel()
   122 {
    90 {
   123     NM_FUNCTION;
    91     NM_FUNCTION;
   124     
    92     
   125     if (!mFolderListing->mIsRunning) {
    93     mFolderListing->cancel(); 
   126         return;
       
   127     }
       
   128 
       
   129     mFolderListing->mIsRunning = false;
       
   130     mFolderListing->releaseEngine();
       
   131     mFolderListing->mFolders.clear();
       
   132 
       
   133     emit canceled();
    94     emit canceled();
   134 }
    95 }
   135 
    96 
   136 /*!
    97 /*!
   137    \brief Return info if listing is running
    98    \brief Return info if listing is running
   138  */
    99  */
   139 bool NmApiFolderListing::isRunning() const
   100 bool NmApiFolderListing::isRunning() const
   140 {
   101 {
   141     NM_FUNCTION;
   102     NM_FUNCTION;
   142     
   103     return mFolderListing->isRunning();
   143     return mFolderListing->mIsRunning;
       
   144 }
   104 }
   145 
   105 
   146 }
   106 }
   147 
   107 
   148 #include "moc_nmapifolderlisting.cpp"
   108