13 * |
13 * |
14 * Description: |
14 * Description: |
15 * |
15 * |
16 */ |
16 */ |
17 |
17 |
18 #include "emailtrace.h" |
18 #include "nmapiheaders.h" |
19 |
19 |
20 #include "nmapiengine.h" |
|
21 #include "nmapifolderlisting_p.h" |
|
22 |
|
23 #include <nmapifolder.h> |
|
24 |
20 |
25 namespace EmailClientApi |
21 namespace EmailClientApi |
26 { |
22 { |
27 |
23 |
28 /*! |
24 /*! |
29 Constructor form NmApiFolderListingPrivate |
25 Constructor form NmApiFolderListingPrivate |
30 */ |
26 */ |
31 NmApiFolderListingPrivate::NmApiFolderListingPrivate(QObject *parent) : |
27 NmApiFolderListingPrivate::NmApiFolderListingPrivate(quint64 mailboxId, QObject *parent) |
32 QObject(parent), mEngine(NULL) |
28 :QObject(parent), |
|
29 mMailboxId(mailboxId), |
|
30 mEngine(NULL), |
|
31 mIsRunning(false) |
33 { |
32 { |
34 NM_FUNCTION; |
33 NM_FUNCTION; |
|
34 mEngine = NmApiEngine::instance(); |
|
35 Q_CHECK_PTR(mEngine); |
35 } |
36 } |
36 |
37 |
37 /*! |
38 /*! |
38 Destructor for NmApiFolderListingPrivate |
39 Destructor for NmApiFolderListingPrivate |
39 */ |
40 */ |
40 NmApiFolderListingPrivate::~NmApiFolderListingPrivate() |
41 NmApiFolderListingPrivate::~NmApiFolderListingPrivate() |
41 { |
42 { |
42 NM_FUNCTION; |
43 NM_FUNCTION; |
43 |
|
44 releaseEngine(); |
|
45 } |
|
46 |
|
47 /*! |
|
48 \brief It initialize engine for email operations. |
|
49 |
|
50 When use initializeEngine need to remember release it. |
|
51 It return value if initialization go good. |
|
52 \sa releaseEngine |
|
53 */ |
|
54 bool NmApiFolderListingPrivate::initializeEngine() |
|
55 { |
|
56 NM_FUNCTION; |
|
57 |
|
58 if (!mEngine) { |
|
59 mEngine = NmApiEngine::instance(); |
|
60 } |
|
61 |
|
62 return mEngine ? true : false; |
|
63 } |
|
64 |
|
65 /*! |
|
66 \brief It release engine for email operations. |
|
67 |
|
68 \sa initializeEngine |
|
69 */ |
|
70 void NmApiFolderListingPrivate::releaseEngine() |
|
71 { |
|
72 NM_FUNCTION; |
|
73 |
|
74 NmApiEngine::releaseInstance(mEngine); |
44 NmApiEngine::releaseInstance(mEngine); |
75 } |
45 } |
76 |
46 |
77 /*! |
47 /*! |
78 \brief It grab folders from engine. |
48 \brief Fetch folders from engine. |
79 |
49 |
80 When it start grabing, it release all old. |
|
81 Because it uses NmFolder with sharedData we don't need care about release memory. |
50 Because it uses NmFolder with sharedData we don't need care about release memory. |
82 |
51 |
83 \return Count of folders or "-1" if there is no engine initialised |
52 \return Count of folders |
84 */ |
53 */ |
85 qint32 NmApiFolderListingPrivate::grabFolders() |
54 qint32 NmApiFolderListingPrivate::listFolders() |
86 { |
55 { |
87 NM_FUNCTION; |
56 NM_FUNCTION; |
88 |
57 mIsRunning = true; |
89 if (!mEngine) { |
|
90 return -1; |
|
91 } |
|
92 |
|
93 mFolders.clear(); |
58 mFolders.clear(); |
94 mEngine->listFolders(mMailboxId, mFolders); |
59 mEngine->listFolders(mMailboxId, mFolders); |
95 return mFolders.count(); |
60 return mFolders.count(); |
96 } |
61 } |
97 |
62 |
|
63 /*! |
|
64 \brief Returns results after listFolders is called. |
|
65 |
|
66 Caller gets ownership of messages. Returns true if results were available. |
|
67 It clears list of folders after be called. |
|
68 It also at start clear inputlist of NmFolder. |
|
69 */ |
|
70 bool NmApiFolderListingPrivate::folders(QList<EmailClientApi::NmApiFolder> &folders) |
|
71 { |
|
72 NM_FUNCTION; |
|
73 bool ret(mIsRunning); |
|
74 folders.clear(); |
|
75 while (!mFolders.isEmpty()) { |
|
76 folders << mFolders.takeFirst(); |
|
77 } |
|
78 mIsRunning = false; |
|
79 return ret; |
98 } |
80 } |
99 |
81 |
|
82 /*! |
|
83 \brief Return info if listing is running |
|
84 */ |
|
85 bool NmApiFolderListingPrivate::isRunning() const |
|
86 { |
|
87 NM_FUNCTION; |
|
88 return mIsRunning; |
|
89 } |
|
90 /*! |
|
91 \brief Clears list of folders. |
|
92 */ |
|
93 void NmApiFolderListingPrivate::cancel() |
|
94 { |
|
95 mIsRunning = false; |
|
96 mFolders.clear(); |
|
97 } |
|
98 } |
|
99 |