--- a/ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h Tue Feb 02 00:02:40 2010 +0200
+++ b/ipsservices/ipssosplugin/inc/ipsplgsosbaseplugin.h Fri Apr 16 14:51:52 2010 +0300
@@ -1,5 +1,5 @@
/*
-* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of "Eclipse Public License v1.0"
@@ -38,26 +38,25 @@
class CIpsPlgSettingsObserver;
class CRepository;
class CIpsPlgSearch;
-class CIpsSetDataApi;
class CIpsPlgSmtpService;
class CIpsPlgSyncStateHandler;
class CIpsPlgEventHandler;
/**
- * FreestyleIpsServices plugin class
- *
+ * FreestyleIpsServices plugin class
+ *
* @lib ipssosplugin.lib
* @since FSEmail 2.0
*/
-class CIpsPlgSosBasePlugin :
+NONSHARABLE_CLASS ( CIpsPlgSosBasePlugin ) :
public CFSMailPlugin,
public MIpsPlgSingleOpWatcher,
public MFSMailRequestObserver, // a dummy observer
public MIpsPlgTimerOperationCallBack
- {
-
+ {
+
public:
-
+
/**
* ~CIpsPlgSosBasePlugin
* Destructor
@@ -67,34 +66,34 @@
public: //from MIpsPlgSingleOpWatcher
/**
- *
+ *
*/
- void OpCompleted(
- CIpsPlgSingleOpWatcher& aOpWatcher,
+ void OpCompleted(
+ CIpsPlgSingleOpWatcher& aOpWatcher,
TInt aCompletionCode );
public: //from MFSMailRequestObserver
-
+
/**
* no real implementation for this. we're just a dummy observer,
* so we can internally run our own operations, like DisconnectL
*/
virtual void RequestResponseL( TFSProgress aEvent, TInt aRequestId );
-
+
public: // from MIpsPlgTimerOperationCallBack
-
+
/**
* Called when activity timer fires
- */
+ */
virtual void HandleTimerFiredL( const TFSMailMsgId& aMailboxId );
-
+
public: // from CFSMailPlugin
virtual void SetMailboxName(
- const TFSMailMsgId& aMailboxId,
+ const TFSMailMsgId& aMailboxId,
const TDesC& aMailboxName );
-
- virtual TFSMailBoxStatus GetMailBoxStatus(
+
+ virtual TFSMailBoxStatus GetMailBoxStatus(
const TFSMailMsgId& aMailBoxId );
virtual TFSMailMsgId SpecifiedSendingMailbox();
@@ -111,20 +110,12 @@
virtual TDesC& GetBrandingIdL( const TFSMailMsgId& aMailBoxId);
virtual void MoveMessagesL(
- const TFSMailMsgId& aMailBoxId,
- const RArray<TFSMailMsgId>& aMessageIds,
- const TFSMailMsgId& aSourceFolderId,
- const TFSMailMsgId& aDestinationFolderId );
+ const TFSMailMsgId& aMailBoxId,
+ const RArray<TFSMailMsgId>& aMessageIds,
+ const TFSMailMsgId& aSourceFolderId,
+ const TFSMailMsgId& aDestinationFolderId );
- virtual TInt MoveMessagesL(
- const TFSMailMsgId& aMailBoxId,
- const RArray<TFSMailMsgId>& aMessageIds,
- const TFSMailMsgId& aSourceFolderId,
- const TFSMailMsgId& aDestinationFolderId,
- MFSMailRequestObserver& aOperationObserver,
- TInt aRequestId );
-
- virtual void CopyMessagesL(
+ virtual void CopyMessagesL(
const TFSMailMsgId& aMailBoxId,
const RArray<TFSMailMsgId>& aMessageIds,
RArray<TFSMailMsgId>& aNewMessages,
@@ -133,29 +124,29 @@
virtual MDesCArray* GetMrusL( const TFSMailMsgId& aMailBoxId );
- virtual void SetMrusL(
- const TFSMailMsgId& aMailBoxId,
+ virtual void SetMrusL(
+ const TFSMailMsgId& aMailBoxId,
MDesCArray* aNewMruList );
- virtual const TFSProgress GetLastSyncStatusL(
+ virtual const TFSProgress GetLastSyncStatusL(
const TFSMailMsgId& aMailBoxId );
virtual TInt CancelSyncL( const TFSMailMsgId& aMailBoxId );
// FOLDER HANDLING
- virtual CFSMailFolder* GetFolderByUidL(
- const TFSMailMsgId& aMailBoxId,
+ virtual CFSMailFolder* GetFolderByUidL(
+ const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aFolderId );
- virtual CFSMailFolder* CreateFolderL(
- const TFSMailMsgId& aMailBoxId,
+ virtual CFSMailFolder* CreateFolderL(
+ const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aFolderId,
- const TDesC& aFolderName,
+ const TDesC& aFolderName,
const TBool aSync );
virtual void DeleteFolderByUidL(
- const TFSMailMsgId& aMailBoxId,
+ const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aFolderId);
// MESSAGE FETCH AND STORE
@@ -166,51 +157,86 @@
const TFSMailDetails aDetails,
const RArray<TFSMailSortCriteria>& aSorting );
- virtual CFSMailMessage* GetMessageByUidL(
- const TFSMailMsgId& aMailBoxId,
+ virtual CFSMailMessage* GetMessageByUidL(
+ const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aFolderId,
- const TFSMailMsgId& aMessageId,
+ const TFSMailMsgId& aMessageId,
const TFSMailDetails aDetails);
- virtual void DeleteMessagesByUidL(
+ virtual void DeleteMessagesByUidL(
const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aFolderId,
const RArray<TFSMailMsgId>& aMessages );
// MESSAGE STORE OPERATIONS
- virtual CFSMailMessage* CreateMessageToSendL(
+ virtual CFSMailMessage* CreateMessageToSendL(
const TFSMailMsgId& aMailBoxId );
+
+// <qmail>
+ virtual void CreateMessageToSendL(
+ const TFSMailMsgId& aMailBoxId,
+ MFSMailRequestObserver& aOperationObserver,
+ const TInt aRequestId );
+// </qmail>
- virtual CFSMailMessage* CreateForwardMessageL(
- const TFSMailMsgId& aMailBoxId,
+ virtual CFSMailMessage* CreateForwardMessageL(
+ const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aOriginalMessageId,
const TDesC& aHeaderDescriptor );
- virtual CFSMailMessage* CreateReplyMessageL(
+// <qmail>
+ virtual void CreateForwardMessageL(
const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aOriginalMessageId,
+ MFSMailRequestObserver& aOperationObserver,
+ const TInt aRequestId,
+ const TDesC& aHeaderDescriptor = KNullDesC );
+// </qmail>
+
+ virtual CFSMailMessage* CreateReplyMessageL(
+ const TFSMailMsgId& aMailBoxId,
+ const TFSMailMsgId& aOriginalMessageId,
const TBool aReplyToAll,
const TDesC& aHeaderDescriptor );
- virtual void StoreMessageL(
- const TFSMailMsgId& aMailBoxId,
+// <qmail>
+ virtual void CreateReplyMessageL(
+ const TFSMailMsgId& aMailBoxId,
+ const TFSMailMsgId& aOriginalMessageId,
+ const TBool aReplyToAll,
+ MFSMailRequestObserver& aOperationObserver,
+ const TInt aRequestId,
+ const TDesC& aHeaderDescriptor );
+// </qmail>
+
+ virtual void StoreMessageL(
+ const TFSMailMsgId& aMailBoxId,
CFSMailMessage& aMessage );
+
+ // <qmail>
+ virtual void StoreMessagesL(
+ const TFSMailMsgId& aMailBoxId,
+ RPointerArray<CFSMailMessage> &messages,
+ MFSMailRequestObserver& aOperationObserver,
+ const TInt aRequestId );
+ // </qmail>
+
virtual void GetMessagesL(
- const TFSMailMsgId& aMailBoxId,
+ const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aFolderId,
const RArray<TFSMailMsgId>& aMessageIds,
RPointerArray<CFSMailMessage>& aMessageList,
const TFSMailDetails aDetails );
-
- virtual void ChildPartsL(
+
+ virtual void ChildPartsL(
const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aParentFolderId,
const TFSMailMsgId& aMessageId,
const TFSMailMsgId& aParentId,
RPointerArray<CFSMailMessagePart>& aParts);
-
+
virtual CFSMailMessagePart* NewChildPartL(
const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aParentFolderId,
@@ -226,6 +252,18 @@
const TFSMailMsgId& aParentPartId,
const TDesC& aContentType,
const TDesC& aFilePath );
+
+ // <qmail>
+ virtual void NewChildPartFromFileL(
+ const TFSMailMsgId& aMailBoxId,
+ const TFSMailMsgId& aParentFolderId,
+ const TFSMailMsgId& aMessageId,
+ const TFSMailMsgId& aParentPartId,
+ const TDesC& aContentType,
+ const TDesC& aFilePath,
+ MFSMailRequestObserver& aOperationObserver,
+ const TInt aRequestId );
+ // </qmail>
/**
* Creates attachment based on file handle
@@ -258,48 +296,48 @@
const TFSMailMsgId& aMessageId,
const TFSMailMsgId& aParentPartId,
const TFSMailMsgId& aPartId);
-
- virtual CFSMailMessagePart* MessagePartL(
- const TFSMailMsgId& aMailBoxId,
+
+ virtual CFSMailMessagePart* MessagePartL(
+ const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aParentFolderId,
const TFSMailMsgId& aMessageId,
const TFSMailMsgId& aMessagePartId);
- virtual TInt GetMessagePartFileL(
- const TFSMailMsgId& aMailBoxId,
+ virtual TInt GetMessagePartFileL(
+ const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aParentFolderId,
const TFSMailMsgId& aMessageId,
- const TFSMailMsgId& aMessagePartId,
+ const TFSMailMsgId& aMessagePartId,
RFile& aFileHandle);
- virtual void CopyMessagePartFileL(
- const TFSMailMsgId& aMailBoxId,
+ virtual void CopyMessagePartFileL(
+ const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aParentFolderId,
const TFSMailMsgId& aMessageId,
- const TFSMailMsgId& aMessagePartId,
+ const TFSMailMsgId& aMessagePartId,
const TDesC& aFilePath);
- virtual void GetContentToBufferL(
+ virtual void GetContentToBufferL(
const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aParentFolderId,
const TFSMailMsgId& aMessageId,
const TFSMailMsgId& aMessagePartId,
TDes& aBuffer,
const TUint aStartOffset);
-
+
virtual void SetContentL(
- const TDesC& aBuffer,
+ const TDesC& aBuffer,
const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aParentFolderId,
- const TFSMailMsgId& aMessageId,
- const TFSMailMsgId& aMessagePartId);
+ const TFSMailMsgId& aMessageId,
+ const TFSMailMsgId& aMessagePartId);
- virtual void RemovePartContentL(
- const TFSMailMsgId& aMailBoxId,
+ virtual void RemovePartContentL(
+ const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aParentFolderId,
const TFSMailMsgId& aMessageId,
const RArray<TFSMailMsgId>& aPartIds);
-
+
virtual void SetPartContentFromFileL(
const TFSMailMsgId& aMailBoxId,
const TFSMailMsgId& aParentFolderId,
@@ -313,27 +351,37 @@
const TFSMailMsgId& aMessageId,
CFSMailMessagePart& aMessagePart);
+ //<qmail>
+ virtual void StoreMessagePartsL(
+ RPointerArray<CFSMailMessagePart>& aMessagePart,
+ MFSMailRequestObserver& aOperationObserver,
+ const TInt aRequestId );
+ //<qmail>
+
virtual void UnregisterRequestObserver( TInt aRequestId );
// MESSAGE SENDING
- virtual void SendL(TFSMailMsgId aMessageId );
+ virtual void SendMessageL( CFSMailMessage& aMessage );
- virtual void SendMessageL( CFSMailMessage& aMessage );
+ virtual void SendMessageL(
+ CFSMailMessage& aMessage,
+ MFSMailRequestObserver& aOperationObserver,
+ const TInt aRequestId );
// OPERATION HANDLING
-
+
virtual void GoOnlineL( const TFSMailMsgId& aMailBoxId );
-
+
virtual void GoOfflineL( const TFSMailMsgId& aMailBoxId );
-
+
virtual TFSProgress StatusL(const TInt aRequestId);
virtual void CancelL(const TInt aRequestId);
- // Search API
+ // Search API
- virtual void SearchL(
+ virtual void SearchL(
const TFSMailMsgId& aMailBoxId,
const RArray<TFSMailMsgId>& aFolderIds,
const RPointerArray<TDesC>& aSearchStrings,
@@ -359,7 +407,7 @@
const TFSMailMsgId& aMailBoxId);
virtual TInt WizardDataAvailableL( );
-
+
/**
* reads connection id from plugin
*
@@ -371,24 +419,24 @@
/**
* checks from plugin if connection is allowed when roaming
*
- * @param aConnectionAllowed
+ * @param aConnectionAllowed
* @return KErrNone or error code
*/
- virtual TInt IsConnectionAllowedWhenRoaming(
- TFSMailMsgId aMailBoxId,
+ virtual TInt IsConnectionAllowedWhenRoaming(
+ TFSMailMsgId aMailBoxId,
TBool& aConnectionAllowed );
virtual void AuthenticateL(
MFSMailRequestObserver& aOperationObserver,
TInt aRequestId );
- virtual void SetCredentialsL(
- const TFSMailMsgId& aMailBoxId,
+ virtual void SetCredentialsL(
+ const TFSMailMsgId& aMailBoxId,
const TDesC& aUsername,
const TDesC& aPassword );
-
+
public:
-
+
/**
* Function to identify which protocol plugin we are working with
* @return MTM id
@@ -403,7 +451,7 @@
* @since FSEmail 2.0
*/
TUint PluginId() const;
-
+
/**
* Disconnects mailbox
*
@@ -414,12 +462,12 @@
* removed afted disconnect, default is EFalse
* @since FSEmail 2.0
*/
- virtual void DisconnectL(
- const TFSMailMsgId& aMailBoxId,
+ virtual void DisconnectL(
+ const TFSMailMsgId& aMailBoxId,
MFSMailRequestObserver& aObserver,
const TInt aRequestId,
TBool aRemoveAccountAlso = EFalse );
-
+
/**
* Fetch content of new mail, used in event handler
* needed because imap idle
@@ -429,11 +477,11 @@
* @param aParentId new mail's parent entry id
* @since FSEmail 2.0
*/
- virtual void PopulateNewMailL(
- const TFSMailMsgId& aMailboxId,
- TMsvId aNewId,
+ virtual void PopulateNewMailL(
+ const TFSMailMsgId& aMailboxId,
+ TMsvId aNewId,
TMsvId aParentId ) = 0;
-
+
/**
* Gets reference to activity timer object, used when clearing
* activity timer in operation complete function (online operation)
@@ -445,27 +493,27 @@
* @since FSEmail 2.0
*/
CIpsPlgTimerOperation& ActivityTimerL( const TFSMailMsgId& aMailBoxId );
-
+
/*
* Gets reference to sync state handler class
- * @return reference to sync state handler
+ * @return reference to sync state handler
* @since FSEmail 2.0
*/
CIpsPlgSyncStateHandler& GetSyncStateHandler();
-
+
/**
* This is called after msv session ready event comes from msv server
* @since FSEmail 2.0
*/
void CompleteConstructL();
-
-
+
+
/**
* called if session terminated event is sent by msv server
* @since FSEmail 2.0
*/
void SessionTerminated();
-
+
/**
* Does checks to see is connection attempt possible and allowed
* @param aMailboxId mailbox to do the checks to
@@ -475,15 +523,15 @@
*/
TBool CanConnectL( const TFSMailMsgId& aMailboxId,
TInt& aReason );
-
+
/*
* Gludge type check is plugin instance running under ui process
* needed in event handler
* @since FSEmail 2.0
*/
TBool IsUnderUiProcess();
-
-protected:
+
+protected:
/*
* Constructor
@@ -498,25 +546,25 @@
/**
* passes completion event to protocol plugin
- * If certain operation completion requires special handling,
+ * If certain operation completion requires special handling,
* protocol plugin should keep the id of the operation
* so it can know, that this certain operation has completed.
*/
- virtual void HandleOpCompletedL(
- CIpsPlgSingleOpWatcher& aOpWatcher,
+ virtual void HandleOpCompletedL(
+ CIpsPlgSingleOpWatcher& aOpWatcher,
TInt aCompletionCode ) = 0;
-
+
/**
* Sends pending messages from outbox, if user manually start
* send-receive operation.
*/
void EmptyOutboxL( const TFSMailMsgId& aMailBoxId );
-
+
/**
* Checks if offline mode is activated
*/
TBool OfflineModeSetL();
-
+
/**
* Checks if given local feature is turned on
*/
@@ -524,89 +572,89 @@
const TUid& aCenRepUid,
const TUint32 aKeyId,
const TUint32 aFlag );
-
+
/**
* Checks if we are roaming and are we allowed to
* connect if we are.
*/
TBool RoamingCheckL();
-
+
/**
* Check network registration status i.e. are we in gsm or wlan network
*/
TInt RegistrationStatusL();
-
+
/**
* Called from Imap Plugin's MoveMessagesL if destination folder
* is draft folder.
*/
void MoveMessagesToDraftL(
- const TFSMailMsgId& aMailBoxId,
- const RArray<TFSMailMsgId>& aMessageIds,
- const TFSMailMsgId& aSourceFolderId,
+ const TFSMailMsgId& aMailBoxId,
+ const RArray<TFSMailMsgId>& aMessageIds,
+ const TFSMailMsgId& aSourceFolderId,
const TFSMailMsgId& aDestinationFolderId );
-
+
private:
-
+
/**
* Returns a cached entry objects or creates new objects and keeps them
* in the cache.
* Returned objects should not be deleted in the calling method.
* Pointers are set NULL in the case of error.
* Pointers are valid until the method is called next time
- * Method should be used only for entries representing messages (not
+ * Method should be used only for entries representing messages (not
* folders or attachements).
*/
- void GetMessageEntryL(
- TMsvId aId,
+ void GetMessageEntryL(
+ TMsvId aId,
CMsvEntry*& aMessageEntry,
CImEmailMessage*& aImEmailMessage );
-
+
/*
* Cleans up the cached messages entries that have accessed with
* GetMessageEntryL()
*/
void CleanCachedMessageEntries();
-
+
/**
* Cancel all online operations, use before disconnect
*/
void CancelAllOnlineOperations( const TFSMailMsgId& aMailboxId );
-
+
/**
* Checks is there any connect operations running, meaning
* that we are "connected" state
*/
TBool ConnOpRunning( const TFSMailMsgId& aMailBoxId );
-
+
/**
* Cancel, delete and remove operation from iOperations array.
* Send Sync Completed event to plugin if operation is sync op
*/
- void DeleteAndRemoveOperation(
+ void DeleteAndRemoveOperation(
const TInt aOpArrayIndex, TInt aCompleteCode );
-
-private:
+
+private:
/**
* Maps symbian msv api's folder type to fs folder type
*/
- TFSFolderType GetFolderType(
- CMsvEntry* aEntry,
+ TFSFolderType GetFolderType(
+ CMsvEntry* aEntry,
TFSMailMsgId aFolderId );
-
+
/**
* Set folders to blocklist in online, offline or in both cases.
- * Operations (move/copy) allowed only between remote folders
+ * Operations (move/copy) allowed only between remote folders
* (+IMAP inbox) in online mode and Outbox->Drafts
*/
- void BlockCopyMoveFromFoldersL(
- CMsvEntry* aFolderEntry,
- TFSMailMsgId aFolderId,
+ void BlockCopyMoveFromFoldersL(
+ CMsvEntry* aFolderEntry,
+ TFSMailMsgId aFolderId,
CFSMailFolder& aFSMailFolder );
-
+
/**
- * Set IMEI code to service's TEntry.iDescription
+ * Set IMEI code to service's TEntry.iDescription
*/
void StoreIMEIToMailboxL( const TMsvId aMailboxId );
@@ -618,18 +666,18 @@
void DeleteActivityTimer( const TFSMailMsgId& aMailBoxId );
protected: // internal enumerations and data structures
-
+
enum TSyncStatesInCenRep
{
ESyncFinishedSuccessfully = 103,
ESyncError,
ESyncCancelled
};
-
+
private:
CIpsPlgSosBasePlugin();
-
+
protected:
// uint of fs plugin implementation, pop of imap
@@ -637,13 +685,13 @@
// Symbian message server session
CMsvSession* iSession;
-
+
// Message mapper instance
CIpsPlgMsgMapper* iMsgMapper;
-
+
//array of operation watchers
RPointerArray<CIpsPlgSingleOpWatcher> iOperations;
-
+
//array of activity timers
RPointerArray<CIpsPlgTimerOperation> iActivitytimers;
@@ -653,39 +701,32 @@
// Cached Symbian message data structures
CMsvEntry* iCachedEntry;
CImEmailMessage* iCachedEmailMessage;
-
+
// read and write most recent used address list
CIpsPlgMruList* iMruList;
-
+
// Search Engine
CIpsPlgSearch* iSearch;
-
- // interface to mailbox settings
- CIpsSetDataApi* iSettingsApi;
-
+
// maps symbian events to fs events
CIpsPlgEventHandler* iEventHandler;
-
- // keeps track is sync started in some plugin instance
+
+ // keeps track is sync started in some plugin instance
// or in always online needed when mailbox status is asked
CIpsPlgSyncStateHandler* iSyncStateHandler;
-
- RConnectionMonitor iConMon;
-
+
+ RConnectionMonitor iConMon;
+
// flag indicates is msv session ready
TBool iSessionOk;
-
+
TBuf<KIpsPlgMaxPhoneIdLength> iIMEI;
// branding id i.e. "yahoo.com" or "google"
HBufC* iBrandingId;
-
+
// flag indicates is instance under FSEmail.exe
TBool iIsUnderUiProcess;
-
- // <cmail> delete draft synchronously
- CActiveSchedulerWait iWait;
- // </cmail>
};
#endif /* IPSPLGSOSBASEPLUGIN_H */