qtmobility/src/messaging/qmtmengine_symbian_p.h
changeset 14 6fbed849b4f4
parent 11 06b8e2af4411
child 15 1f895d8a5b2b
--- a/qtmobility/src/messaging/qmtmengine_symbian_p.h	Fri Jun 11 14:26:25 2010 +0300
+++ b/qtmobility/src/messaging/qmtmengine_symbian_p.h	Wed Jun 23 19:08:38 2010 +0300
@@ -75,6 +75,7 @@
 class CMessagesFindOperation;
 class QMessageId;
 class QMessageAccount;
+class CAsynchronousMTMOperation;
 
 struct MessageEvent
 {
@@ -145,10 +146,10 @@
     bool sendEmail(QMessage &message);
     bool storeSMS(QMessage &message);
     bool sendSMS(QMessage &message);
-    bool retrieve(const QMessageId &messageId, const QMessageContentContainerId& id);
-    bool retrieveBody(const QMessageId& id);
-    bool retrieveHeader(const QMessageId& id);
-    bool exportUpdates(const QMessageAccountId &id);
+    bool retrieve(QMessageServicePrivate& privateService, const QMessageId &messageId, const QMessageContentContainerId& id);
+    bool retrieveBody(QMessageServicePrivate& privateService, const QMessageId& id);
+    bool retrieveHeader(QMessageServicePrivate& privateService, const QMessageId& id);
+    bool exportUpdates(QMessageServicePrivate& privateService, const QMessageAccountId &id);
     
     QByteArray attachmentContent(long int messageId, unsigned int attachmentId);
     QString attachmentTextContent(long int messageId, unsigned int attachmentId, const QByteArray &charset);
@@ -228,10 +229,10 @@
     void storeSMSL(QMessage &message);
     bool validateSMS();
     void sendSMSL(QMessage &message);
-    void retrieveL(const QMessageId &messageId, const QMessageContentContainerId& id);
-    void retrieveBodyL(const QMessageId& id) const;
-    void retrieveHeaderL(const QMessageId& id) const;
-    void exportUpdatesL(const QMessageAccountId &id) const;
+    void retrieveL(QMessageServicePrivate& privateService, const QMessageId &messageId, const QMessageContentContainerId& id);
+    void retrieveBodyL(QMessageServicePrivate& privateService, const QMessageId& id);
+    void retrieveHeaderL(QMessageServicePrivate& privateService, const QMessageId& id);
+    void exportUpdatesL(QMessageServicePrivate& privateService, const QMessageAccountId &id);
     void appendAttachmentToMessage(QMessage& message, QMessageContentContainer& attachment) const;
     QByteArray attachmentContentL(long int messageId, unsigned int attachmentId);
     
@@ -243,6 +244,11 @@
     static void cmsvEntryCleanup(TAny* aCMsvEntry);    
     CMsvEntry* retrieveCMsvEntryAndPushToCleanupStack(TMsvId id = 0) const;
     void releaseCMsvEntryAndPopFromCleanupStack(CMsvEntry* pEntry) const;
+    
+    CAsynchronousMTMOperation* createAsynchronousMTMOperation(QMessageServicePrivate& privateService,
+                                                              CBaseMtm* mtm,
+                                                              TMsvId serviceId);
+    void deleteAsynchronousMTMOperation(CAsynchronousMTMOperation *apOperation);
 
 private: // from CActive
     void RunL();
@@ -302,6 +308,7 @@
     
     friend class QMessageService;
     friend class CMessagesFindOperation;
+    friend class CAsynchronousMTMOperation;
 };
 
 class CMessagesFindOperation : public CActive
@@ -346,6 +353,74 @@
     mutable RTimer iTimer;
 };
 
+class QMTMWait : public CActive
+{
+public:
+    QMTMWait(TInt aPriority = EPriorityStandard);
+    ~QMTMWait();
+
+    void start();
+
+protected: // From CActive
+    void RunL();
+    void DoCancel();
+    
+private: // Data
+    QEventLoop m_eventLoop;
+};
+
+class CAsynchronousMTMOperation : public CActive
+{
+public:
+    enum MTMOperation
+    {
+        MTMOperationRetrieveMessageHeader,
+        MTMOperationRetrieveMessageBody,
+        MTMOperationRetrieveMessageAttachments,
+        MTMOperationFullSync,
+    };    
+
+    enum MTMOperationStep
+    {
+        MTMOperationStepConnect,
+        MTMOperationStepDoOperation,
+        MTMOperationStepDisconnect,
+        MTMOperationStepFinished
+    };    
+    
+    CAsynchronousMTMOperation(CMTMEngine& aParent,
+                              QMessageServicePrivate& privateService,
+                              CBaseMtm* mtm,
+                              TMsvId serviceId,
+                              TInt aOperationId);
+    ~CAsynchronousMTMOperation();
+
+    bool retrieveMessageHeader(TMsvId aMessageId);
+    bool retrieveMessageBody(TMsvId aMessageId);
+    bool retrieveMessageAttachments(TMsvId aMessageId);
+    bool doFullSync();
+
+protected: // From CActive
+    void RunL();
+    void DoCancel();
+    
+private: // Data
+    CMTMEngine* ipParent;
+
+    TInt iOperationId;
+    TMsvId iServiceId;
+    TMsvId iMessageId;
+    QMessageServicePrivate* ipPrivateService;
+    
+    CBaseMtm*           ipMTM;
+    MTMOperation        iOperation;
+    MTMOperationStep    iOperationStep;
+    
+    CMsvEntrySelection* ipMsvEntrySelection;
+    CMsvOperation*      ipMsvOperation;
+    
+    bool                isActive;
+};
 
 QTM_END_NAMESPACE
 #endif // QMTMENGINE_SYMBIAN_H