emailservices/nmclientapi/src/nmapifolderlisting.cpp
changeset 49 00c7ae862740
parent 48 10eaf342f539
child 76 38bf5461e270
equal deleted inserted replaced
48:10eaf342f539 49:00c7ae862740
    26  */
    26  */
    27 
    27 
    28 /*!
    28 /*!
    29    Constructor of class. It set start values.
    29    Constructor of class. It set start values.
    30  */
    30  */
    31 NmApiFolderListing::NmApiFolderListing(QObject *parent, const quint64 &nmMailboxId) :
    31 NmApiFolderListing::NmApiFolderListing(QObject *parent, const quint64 &mailboxId) :
    32     NmApiMessageTask(parent)
    32     NmApiMessageTask(parent)
    33 {
    33 {
    34     NM_FUNCTION;
    34     NM_FUNCTION;
    35     
    35     mFolderListing = new NmApiFolderListingPrivate(mailboxId, this);
    36     mFolderListing = new NmApiFolderListingPrivate(this);
       
    37     mFolderListing->mIsRunning = false;
       
    38     mFolderListing->mMailboxId = nmMailboxId;
       
    39 }
    36 }
    40 
    37 
    41 /*!
    38 /*!
    42    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.
    43  */
    40  */
    44 NmApiFolderListing::~NmApiFolderListing()
    41 NmApiFolderListing::~NmApiFolderListing()
    45 {
    42 {
    46     NM_FUNCTION;
    43     NM_FUNCTION;
    47     
       
    48     if (mFolderListing->mIsRunning) {
       
    49         mFolderListing->releaseEngine();
       
    50     }
       
    51 }
    44 }
    52 
    45 
    53 /*! 
    46 /*! 
    54    \brief Returns results after foldersListed signal is received.
    47    \brief Returns results after foldersListed signal is received.
    55    
    48    
    58     It also at start clear inputlist of NmFolder.
    51     It also at start clear inputlist of NmFolder.
    59  */
    52  */
    60 bool NmApiFolderListing::getFolders(QList<EmailClientApi::NmApiFolder> &folders)
    53 bool NmApiFolderListing::getFolders(QList<EmailClientApi::NmApiFolder> &folders)
    61 {
    54 {
    62     NM_FUNCTION;
    55     NM_FUNCTION;
    63     
    56     return mFolderListing->folders(folders);
    64     folders.clear();
       
    65     if (!mFolderListing->mIsRunning || mFolderListing->mFolders.isEmpty()) {
       
    66         return false;
       
    67     }
       
    68     folders = mFolderListing->mFolders;
       
    69     mFolderListing->mFolders.clear();
       
    70     return true;
       
    71 }
    57 }
    72 
    58 
    73 /*!
    59 /*!
    74    \brief Starts gathering folders list.
    60    \brief Starts gathering folders list.
    75    
    61    
    84    
    70    
    85  */
    71  */
    86 bool NmApiFolderListing::start()
    72 bool NmApiFolderListing::start()
    87 {
    73 {
    88     NM_FUNCTION;
    74     NM_FUNCTION;
    89     
    75     qint32 folderCount = mFolderListing->listFolders();
    90     if (mFolderListing->mIsRunning) {
       
    91         return true;
       
    92     }
       
    93 
       
    94     if (!mFolderListing->initializeEngine()) {
       
    95         QMetaObject::invokeMethod(this, "foldersListed", Qt::QueuedConnection, Q_ARG(qint32,
       
    96             (qint32) FolderListingFailed));
       
    97         return false;
       
    98     }
       
    99 
       
   100     qint32 folderCount = mFolderListing->grabFolders();
       
   101 
       
   102     mFolderListing->mIsRunning = true;
       
   103     QMetaObject::invokeMethod(this, "foldersListed", Qt::QueuedConnection,
    76     QMetaObject::invokeMethod(this, "foldersListed", Qt::QueuedConnection,
   104         Q_ARG(qint32, folderCount));
    77         Q_ARG(qint32, folderCount));
   105 
    78 
   106     return true;
    79     return true;
   107 }
    80 }
   115  */
    88  */
   116 void NmApiFolderListing::cancel()
    89 void NmApiFolderListing::cancel()
   117 {
    90 {
   118     NM_FUNCTION;
    91     NM_FUNCTION;
   119     
    92     
   120     if (!mFolderListing->mIsRunning) {
    93     mFolderListing->cancel(); 
   121         return;
       
   122     }
       
   123 
       
   124     mFolderListing->mIsRunning = false;
       
   125     mFolderListing->releaseEngine();
       
   126     mFolderListing->mFolders.clear();
       
   127 
       
   128     emit canceled();
    94     emit canceled();
   129 }
    95 }
   130 
    96 
   131 /*!
    97 /*!
   132    \brief Return info if listing is running
    98    \brief Return info if listing is running
   133  */
    99  */
   134 bool NmApiFolderListing::isRunning() const
   100 bool NmApiFolderListing::isRunning() const
   135 {
   101 {
   136     NM_FUNCTION;
   102     NM_FUNCTION;
   137     
   103     return mFolderListing->isRunning();
   138     return mFolderListing->mIsRunning;
       
   139 }
   104 }
   140 
   105 
   141 }
   106 }
   142 
   107 
   143 
   108