emailservices/nmclientapi/src/nmapimessagemanager_p.cpp
changeset 74 6c59112cfd31
parent 68 83cc6bae1de8
child 76 38bf5461e270
--- a/emailservices/nmclientapi/src/nmapimessagemanager_p.cpp	Wed Sep 15 17:47:19 2010 +0300
+++ b/emailservices/nmclientapi/src/nmapimessagemanager_p.cpp	Thu Sep 30 11:43:07 2010 +0300
@@ -21,145 +21,109 @@
 namespace EmailClientApi
 {
 
+/*!
+    Class constructor.
+*/
 NmApiMessageManagerPrivate::NmApiMessageManagerPrivate(QObject *parent,quint64 mailboxId)
 : QObject(parent),
-  mState(NmApiMessageManagerPrivate::EIdle), mMailboxId(mailboxId)
+  mMailBoxId(0),
+  mMailBox(NULL),
+  mMailPlugin(NULL),
+  mEngine(NULL)
 {
-    NM_FUNCTION;	
-	
-    mFactory = NmApiDataPluginFactory::instance();
-    mPlugin = mFactory->plugin();    
-    if(mPlugin) {
-        connect(mPlugin,
-                SIGNAL(messageEvent(NmMessageEvent,
-                                    const NmId&,
-                                    const QList<NmId>&,
-                                    const NmId&)),
-                this,
-                SLOT(messageEventHandler(NmMessageEvent,
-                                    const NmId&,
-                                    const QList<NmId>&,
-                                    const NmId&)));
-    }				
-    NmDataPluginInterface *interface = mFactory->interfaceInstance();
-    interface->subscribeMailboxEvents(mailboxId);
-	
+    NM_FUNCTION;
+    NmId mailBoxId(mailboxId);
+    mMailBoxId = TFSMailMsgId(mailBoxId);
+    mEngine = NmApiEngine::instance();
+    initialise();
 }
 
+/*!
+    Class destructor.
+*/
 NmApiMessageManagerPrivate::~NmApiMessageManagerPrivate()
 {
     NM_FUNCTION;
-    NmDataPluginInterface *interface = mFactory->interfaceInstance();
-    interface->unsubscribeMailboxEvents(mMailboxId);
-    NmApiDataPluginFactory::releaseInstance(mFactory);
+    
+    if (mMailBox){
+        delete mMailBox;
+        mMailBox = NULL;
+    }
+    
+    NmApiEngine::releaseInstance(mEngine);
 }
-    
+
 /*!
- \fn moveMessages 
- \param messageIds Id list of source messages.
- \param sourceFolderId Id of the source folder.
- \param targetFolderId Id of the target folder.
- \return true if operation was successfully started.
+ \fn createDraftMessage 
+ \param initData Initializing data. Can contain NULL value.
+ \return Create draft message operation.
  
- Starts async move operation for given messages.  
- Completion signalled with messagesMoved(int result).
+ Returns create draft message operation.
  */
-bool NmApiMessageManagerPrivate::moveMessages(const QList<quint64> messageIds,
-											quint64 sourceFolder,
-											quint64 targetFolder)
+QPointer<NmApiOperation> NmApiMessageManagerPrivate::createDraftMessage(const QVariant *initData)
 {
     NM_FUNCTION;
-    Q_UNUSED(messageIds);
-    Q_UNUSED(sourceFolder);
-    Q_UNUSED(targetFolder);
-    return false;
+    if (mMailBox){
+        QPointer<NmApiOperation> operation = new NmApiOperationCreateDraftMessage(initData, *mMailBox, this);
+        return operation;
+    }
+    return NULL;
 }
-    
+
 /*!
- \fn copyMessages 
- \param messageIds Id list of source messages.
- \param sourceFolder Id of the source folder.
- \param targetFolder Id of the target folder.
- \return true if operation was successfully started.
+ \fn sendMessage 
+ \param message message to be sent.
+ \return Send message operation.
  
- Starts async copy operation for given messages.  
- Completion signalled with messagesCopied(int result).
+ Returns Send message operation.
  */
-bool NmApiMessageManagerPrivate::copyMessages(const QList<quint64> messageIds,
-                                            const quint64 sourceFolder,
-											const quint64 targetFolder)
+QPointer<NmApiOperation> NmApiMessageManagerPrivate::sendMessage(const NmApiMessage &message)
 {
     NM_FUNCTION;
-    bool ret = false;
-    NmId targetFolderNmId(targetFolder);
-	NmId sourceFolderNmId(sourceFolder);
-	mTarget = targetFolderNmId;
-	mMessages = messageIds;
-	
-	NmDataPluginInterface *interface = mFactory->interfaceInstance();
-	
-    if (interface) {
-        mState = NmApiMessageManagerPrivate::ECopyPending;
-        if (interface->copyMessages(mMailboxId,
-                                  messageIds,
-                                  sourceFolderNmId,
-                                  targetFolderNmId)==0) {			
-            ret = true;
-        }        
+    if (mMailBox){
+        QPointer<NmApiOperation> operation = new NmApiOperationSendMessage(message, *mMailBox, this);
+        return operation;
     }
-	mState = NmApiMessageManagerPrivate::EIdle;
-	return ret;
+    return NULL;
 }
-  
+
 /*!
- \fn messageEventHandler 
- \param event Event type.
- \param folder Folder id.
- \param messages Id list of messages involved.
- \param mailBox Id of mailbox.
-  
- Handler for plugin originated messageEvent.
+ \fn saveMessage 
+ \param message Message to be saved.
+ \return Save message operation.
+ 
+ Saves email message. Returns save message operation. 
  */
-void NmApiMessageManagerPrivate::messageEventHandler(NmMessageEvent event,
-												const NmId &folder,
-												const QList<NmId> &messages,
-												const NmId &mailBox)
-{	
-	if(mMailboxId == mailBox &&
-	   mTarget == folder) {	
-        switch(event)
-        {
-            case NmMessageCreated: {
-                if (mState==NmApiMessageManagerPrivate::ECopyPending) {
-                    if(messages.count()==mMessages.count()) {
-                        emit messagesCopied(0);
-                    }
-                    else {
-                        emit messagesCopied(-1);
-                    }
-                }
-                break;			
-            }
-            
-            case NmMessageChanged: {
-                break;		
-            }
-            
-            case NmMessageDeleted: {            
-                break;
-            }
-                
-            case NmMessageFound: {
-                break;
-            }
-            
-            default: {
-                break;
+QPointer<NmApiOperation> NmApiMessageManagerPrivate::saveMessage(const NmApiMessage &message)
+{
+    return NULL;
+}
+
+/*!
+ \fn initialise
+ 
+ Initializes mailbox and mailplugin.
+ */
+void NmApiMessageManagerPrivate::initialise()
+{
+    NM_FUNCTION;
+    RPointerArray<CFSMailPlugin> mailPlugins;
+    if (mEngine) {
+        mEngine->listMailPlugins(mailPlugins);
+    
+        for (int i = 0; i < mailPlugins.Count() && !mMailPlugin; i++){
+            if (mailPlugins[i]->Id() == mMailBoxId.PluginId()) {
+                mMailPlugin = mailPlugins[i];
             }
         }
-        mState = NmApiMessageManagerPrivate::EIdle;
-	}
+        
+        if (mMailPlugin) {
+            TRAPD(err, mMailBox = mMailPlugin->GetMailBoxByUidL(mMailBoxId));
+            Q_UNUSED(err);
+        }
+    }
 }
+
 } //namespace