emailservices/nmclientapi/src/nmapimessagemanager_p.cpp
changeset 47 f83bd4ae1fe3
child 48 10eaf342f539
equal deleted inserted replaced
45:780f926bc26c 47:f83bd4ae1fe3
       
     1 /*
       
     2  * Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
       
     3  * All rights reserved.
       
     4  * This component and the accompanying materials are made available
       
     5  * under the terms of "Eclipse Public License v1.0"
       
     6  * which accompanies this distribution, and is available
       
     7  * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8  *
       
     9  * Initial Contributors:
       
    10  * Nokia Corporation - initial contribution.
       
    11  *
       
    12  * Contributors:
       
    13  *
       
    14  * Description:
       
    15  *     Email message related operations
       
    16  */
       
    17 
       
    18 #include <nmapimessagemanager.h>
       
    19 #include <nmapidatapluginfactory.h>
       
    20 #include <nmdataplugininterface.h>
       
    21 #include <nmapifolder.h>
       
    22 #include <nmcommon.h>
       
    23 #include "nmapimessagemanager_p.h"
       
    24 #include "emailtrace.h"
       
    25 
       
    26 namespace EmailClientApi
       
    27 {
       
    28 
       
    29 NmApiMessageManagerPrivate::NmApiMessageManagerPrivate(quint64 mailboxId,QObject *parent)
       
    30 : QObject(parent),
       
    31   mState(NmApiMessageManagerPrivate::EIdle), mMailboxId(mailboxId)
       
    32 {
       
    33     NM_FUNCTION;	
       
    34 	
       
    35     mFactory = NmApiDataPluginFactory::instance();
       
    36     mPlugin = mFactory->plugin();    
       
    37     if(mPlugin) {
       
    38         connect(mPlugin,
       
    39                 SIGNAL(messageEvent(NmMessageEvent,
       
    40                                     const NmId&,
       
    41                                     const QList<NmId>&,
       
    42                                     const NmId&)),
       
    43                 this,
       
    44                 SLOT(messageEventHandler(NmMessageEvent,
       
    45                                     const NmId&,
       
    46                                     const QList<NmId>&,
       
    47                                     const NmId&)));
       
    48     }				
       
    49     NmDataPluginInterface *interface = mFactory->interfaceInstance();
       
    50     interface->subscribeMailboxEvents(mailboxId);
       
    51 	
       
    52 }
       
    53 
       
    54 NmApiMessageManagerPrivate::~NmApiMessageManagerPrivate()
       
    55 {
       
    56     NM_FUNCTION;
       
    57     NmDataPluginInterface *interface = mFactory->interfaceInstance();
       
    58     interface->unsubscribeMailboxEvents(mMailboxId);
       
    59     NmApiDataPluginFactory::releaseInstance(mFactory);
       
    60 }
       
    61     
       
    62 /*!
       
    63  \fn moveMessages 
       
    64  \param messageIds Id list of source messages.
       
    65  \param sourceFolderId Id of the source folder.
       
    66  \param targetFolderId Id of the target folder.
       
    67  \return true if operation was successfully started.
       
    68  
       
    69  Starts async move operation for given messages.  
       
    70  Completion signalled with messagesMoved(int result).
       
    71  */
       
    72 bool NmApiMessageManagerPrivate::moveMessages(const QList<quint64> messageIds,
       
    73 											quint64 sourceFolder,
       
    74 											quint64 targetFolder)
       
    75 {
       
    76     NM_FUNCTION;
       
    77     Q_UNUSED(messageIds);
       
    78     Q_UNUSED(sourceFolder);
       
    79     Q_UNUSED(targetFolder);
       
    80     return false;
       
    81 }
       
    82     
       
    83 /*!
       
    84  \fn copyMessages 
       
    85  \param messageIds Id list of source messages.
       
    86  \param sourceFolder Id of the source folder.
       
    87  \param targetFolder Id of the target folder.
       
    88  \return true if operation was successfully started.
       
    89  
       
    90  Starts async copy operation for given messages.  
       
    91  Completion signalled with messagesCopied(int result).
       
    92  */
       
    93 bool NmApiMessageManagerPrivate::copyMessages(const QList<quint64> messageIds,
       
    94                                             const quint64 sourceFolder,
       
    95 											const quint64 targetFolder)
       
    96 {
       
    97     NM_FUNCTION;
       
    98     bool ret = false;
       
    99     NmId targetFolderNmId(targetFolder);
       
   100 	NmId sourceFolderNmId(sourceFolder);
       
   101 	mTarget = targetFolderNmId;
       
   102 	mMessages = messageIds;
       
   103 	
       
   104 	NmDataPluginInterface *interface = mFactory->interfaceInstance();
       
   105 	
       
   106     if (interface) {
       
   107         mState = NmApiMessageManagerPrivate::ECopyPending;
       
   108         if (interface->copyMessages(mMailboxId,
       
   109                                   messageIds,
       
   110                                   sourceFolderNmId,
       
   111                                   targetFolderNmId)==0) {			
       
   112             ret = true;
       
   113         }        
       
   114     }
       
   115 	mState = NmApiMessageManagerPrivate::EIdle;
       
   116 	return ret;
       
   117 }
       
   118   
       
   119 /*!
       
   120  \fn messageEventHandler 
       
   121  \param event Event type.
       
   122  \param folder Folder id.
       
   123  \param messages Id list of messages involved.
       
   124  \param mailBox Id of mailbox.
       
   125   
       
   126  Handler for plugin originated messageEvent.
       
   127  */
       
   128 void NmApiMessageManagerPrivate::messageEventHandler(NmMessageEvent event,
       
   129 												const NmId &folder,
       
   130 												const QList<NmId> &messages,
       
   131 												const NmId &mailBox)
       
   132 {	
       
   133 	if(mMailboxId == mailBox &&
       
   134 	   mTarget == folder) {	
       
   135         switch(event)
       
   136         {
       
   137             case NmMessageCreated: {
       
   138                 if (mState==NmApiMessageManagerPrivate::ECopyPending) {
       
   139                     if(messages.count()==mMessages.count()) {
       
   140                         emit messagesCopied(0);
       
   141                     }
       
   142                     else {
       
   143                         emit messagesCopied(-1);
       
   144                     }
       
   145                 }
       
   146                 break;			
       
   147             }
       
   148             
       
   149             case NmMessageChanged: {
       
   150                 break;		
       
   151             }
       
   152             
       
   153             case NmMessageDeleted: {            
       
   154                 break;
       
   155             }
       
   156                 
       
   157             case NmMessageFound: {
       
   158                 break;
       
   159             }
       
   160             
       
   161             default: {
       
   162                 break;
       
   163             }
       
   164         }
       
   165         mState = NmApiMessageManagerPrivate::EIdle;
       
   166 	}
       
   167 }
       
   168 } //namespace
       
   169 
       
   170