19 |
19 |
20 |
20 |
21 namespace EmailClientApi |
21 namespace EmailClientApi |
22 { |
22 { |
23 |
23 |
|
24 /*! |
|
25 Class constructor. |
|
26 */ |
24 NmApiMessageManagerPrivate::NmApiMessageManagerPrivate(QObject *parent,quint64 mailboxId) |
27 NmApiMessageManagerPrivate::NmApiMessageManagerPrivate(QObject *parent,quint64 mailboxId) |
25 : QObject(parent), |
28 : QObject(parent), |
26 mState(NmApiMessageManagerPrivate::EIdle), mMailboxId(mailboxId) |
29 mMailBoxId(0), |
|
30 mMailBox(NULL), |
|
31 mMailPlugin(NULL), |
|
32 mEngine(NULL) |
27 { |
33 { |
28 NM_FUNCTION; |
34 NM_FUNCTION; |
29 |
35 NmId mailBoxId(mailboxId); |
30 mFactory = NmApiDataPluginFactory::instance(); |
36 mMailBoxId = TFSMailMsgId(mailBoxId); |
31 mPlugin = mFactory->plugin(); |
37 mEngine = NmApiEngine::instance(); |
32 if(mPlugin) { |
38 initialise(); |
33 connect(mPlugin, |
|
34 SIGNAL(messageEvent(NmMessageEvent, |
|
35 const NmId&, |
|
36 const QList<NmId>&, |
|
37 const NmId&)), |
|
38 this, |
|
39 SLOT(messageEventHandler(NmMessageEvent, |
|
40 const NmId&, |
|
41 const QList<NmId>&, |
|
42 const NmId&))); |
|
43 } |
|
44 NmDataPluginInterface *interface = mFactory->interfaceInstance(); |
|
45 interface->subscribeMailboxEvents(mailboxId); |
|
46 |
|
47 } |
39 } |
48 |
40 |
|
41 /*! |
|
42 Class destructor. |
|
43 */ |
49 NmApiMessageManagerPrivate::~NmApiMessageManagerPrivate() |
44 NmApiMessageManagerPrivate::~NmApiMessageManagerPrivate() |
50 { |
45 { |
51 NM_FUNCTION; |
46 NM_FUNCTION; |
52 NmDataPluginInterface *interface = mFactory->interfaceInstance(); |
47 |
53 interface->unsubscribeMailboxEvents(mMailboxId); |
48 if (mMailBox){ |
54 NmApiDataPluginFactory::releaseInstance(mFactory); |
49 delete mMailBox; |
|
50 mMailBox = NULL; |
|
51 } |
|
52 |
|
53 NmApiEngine::releaseInstance(mEngine); |
55 } |
54 } |
56 |
55 |
57 /*! |
56 /*! |
58 \fn moveMessages |
57 \fn createDraftMessage |
59 \param messageIds Id list of source messages. |
58 \param initData Initializing data. Can contain NULL value. |
60 \param sourceFolderId Id of the source folder. |
59 \return Create draft message operation. |
61 \param targetFolderId Id of the target folder. |
|
62 \return true if operation was successfully started. |
|
63 |
60 |
64 Starts async move operation for given messages. |
61 Returns create draft message operation. |
65 Completion signalled with messagesMoved(int result). |
|
66 */ |
62 */ |
67 bool NmApiMessageManagerPrivate::moveMessages(const QList<quint64> messageIds, |
63 QPointer<NmApiOperation> NmApiMessageManagerPrivate::createDraftMessage(const QVariant *initData) |
68 quint64 sourceFolder, |
|
69 quint64 targetFolder) |
|
70 { |
64 { |
71 NM_FUNCTION; |
65 NM_FUNCTION; |
72 Q_UNUSED(messageIds); |
66 if (mMailBox){ |
73 Q_UNUSED(sourceFolder); |
67 QPointer<NmApiOperation> operation = new NmApiOperationCreateDraftMessage(initData, *mMailBox, this); |
74 Q_UNUSED(targetFolder); |
68 return operation; |
75 return false; |
69 } |
|
70 return NULL; |
76 } |
71 } |
77 |
72 |
78 /*! |
73 /*! |
79 \fn copyMessages |
74 \fn sendMessage |
80 \param messageIds Id list of source messages. |
75 \param message message to be sent. |
81 \param sourceFolder Id of the source folder. |
76 \return Send message operation. |
82 \param targetFolder Id of the target folder. |
|
83 \return true if operation was successfully started. |
|
84 |
77 |
85 Starts async copy operation for given messages. |
78 Returns Send message operation. |
86 Completion signalled with messagesCopied(int result). |
|
87 */ |
79 */ |
88 bool NmApiMessageManagerPrivate::copyMessages(const QList<quint64> messageIds, |
80 QPointer<NmApiOperation> NmApiMessageManagerPrivate::sendMessage(const NmApiMessage &message) |
89 const quint64 sourceFolder, |
|
90 const quint64 targetFolder) |
|
91 { |
81 { |
92 NM_FUNCTION; |
82 NM_FUNCTION; |
93 bool ret = false; |
83 if (mMailBox){ |
94 NmId targetFolderNmId(targetFolder); |
84 QPointer<NmApiOperation> operation = new NmApiOperationSendMessage(message, *mMailBox, this); |
95 NmId sourceFolderNmId(sourceFolder); |
85 return operation; |
96 mTarget = targetFolderNmId; |
|
97 mMessages = messageIds; |
|
98 |
|
99 NmDataPluginInterface *interface = mFactory->interfaceInstance(); |
|
100 |
|
101 if (interface) { |
|
102 mState = NmApiMessageManagerPrivate::ECopyPending; |
|
103 if (interface->copyMessages(mMailboxId, |
|
104 messageIds, |
|
105 sourceFolderNmId, |
|
106 targetFolderNmId)==0) { |
|
107 ret = true; |
|
108 } |
|
109 } |
86 } |
110 mState = NmApiMessageManagerPrivate::EIdle; |
87 return NULL; |
111 return ret; |
|
112 } |
88 } |
113 |
89 |
114 /*! |
90 /*! |
115 \fn messageEventHandler |
91 \fn saveMessage |
116 \param event Event type. |
92 \param message Message to be saved. |
117 \param folder Folder id. |
93 \return Save message operation. |
118 \param messages Id list of messages involved. |
94 |
119 \param mailBox Id of mailbox. |
95 Saves email message. Returns save message operation. |
120 |
|
121 Handler for plugin originated messageEvent. |
|
122 */ |
96 */ |
123 void NmApiMessageManagerPrivate::messageEventHandler(NmMessageEvent event, |
97 QPointer<NmApiOperation> NmApiMessageManagerPrivate::saveMessage(const NmApiMessage &message) |
124 const NmId &folder, |
98 { |
125 const QList<NmId> &messages, |
99 return NULL; |
126 const NmId &mailBox) |
100 } |
127 { |
101 |
128 if(mMailboxId == mailBox && |
102 /*! |
129 mTarget == folder) { |
103 \fn initialise |
130 switch(event) |
104 |
131 { |
105 Initializes mailbox and mailplugin. |
132 case NmMessageCreated: { |
106 */ |
133 if (mState==NmApiMessageManagerPrivate::ECopyPending) { |
107 void NmApiMessageManagerPrivate::initialise() |
134 if(messages.count()==mMessages.count()) { |
108 { |
135 emit messagesCopied(0); |
109 NM_FUNCTION; |
136 } |
110 RPointerArray<CFSMailPlugin> mailPlugins; |
137 else { |
111 if (mEngine) { |
138 emit messagesCopied(-1); |
112 mEngine->listMailPlugins(mailPlugins); |
139 } |
113 |
140 } |
114 for (int i = 0; i < mailPlugins.Count() && !mMailPlugin; i++){ |
141 break; |
115 if (mailPlugins[i]->Id() == mMailBoxId.PluginId()) { |
142 } |
116 mMailPlugin = mailPlugins[i]; |
143 |
|
144 case NmMessageChanged: { |
|
145 break; |
|
146 } |
|
147 |
|
148 case NmMessageDeleted: { |
|
149 break; |
|
150 } |
|
151 |
|
152 case NmMessageFound: { |
|
153 break; |
|
154 } |
|
155 |
|
156 default: { |
|
157 break; |
|
158 } |
117 } |
159 } |
118 } |
160 mState = NmApiMessageManagerPrivate::EIdle; |
119 |
161 } |
120 if (mMailPlugin) { |
|
121 TRAPD(err, mMailBox = mMailPlugin->GetMailBoxByUidL(mMailBoxId)); |
|
122 Q_UNUSED(err); |
|
123 } |
|
124 } |
162 } |
125 } |
|
126 |
163 } //namespace |
127 } //namespace |
164 |
128 |
165 |
129 |