emailservices/nmclientapi/src/nmapimessagemanager_p.cpp
changeset 74 6c59112cfd31
parent 68 83cc6bae1de8
child 76 38bf5461e270
equal deleted inserted replaced
69:4e54af54a4a1 74:6c59112cfd31
    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