--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/shortlinkconn_plat/obex_service_utils_api/inc/obexutilsmessagehandler.h Wed Sep 01 12:20:40 2010 +0100
@@ -0,0 +1,479 @@
+/*
+* Copyright (c) 2002 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"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+
+#ifndef OBEXUTILSMESSAGEHANDLER_H
+#define OBEXUTILSMESSAGEHANDLER_H
+
+// INCLUDES
+#include <e32base.h>
+#include <e32cmn.h>
+#include <obex.h>
+#include <msvapi.h>
+
+#include <cmsvattachment.h>
+#include <biodb.h>
+
+// CLASS DECLARATION
+
+/**
+* Utility methods for message handling.
+*/
+class TObexUtilsMessageHandler
+ {
+ public:
+
+ /**
+ * Get status of file system. (in C drive)
+ * @return Symbian OS errorcode
+ */
+ IMPORT_C static TInt GetFileSystemStatus();
+
+ /**
+ * Get status of file system in MMC.
+ * @return Symbian OS errorcode
+ */
+ IMPORT_C static TInt GetMmcFileSystemStatus();
+
+ /**
+ * Get current message centre drive
+ * @return Drive unit of the message centre drive
+ */
+ IMPORT_C static TInt GetMessageCentreDriveL();
+
+ /**
+ * Creates default Mtm service
+ * @param aMtm Mtm
+ */
+ IMPORT_C static void CreateDefaultMtmServiceL(TUid aMtm);
+
+ /**
+ * Saves received object to Inbox.
+ * @param aReceivedObject The object to be saved.
+ * @param aDrive The current messaging drive.
+ * @param aMtmID The message type module id.
+ * @return None.
+ */
+ IMPORT_C static void SaveObjToInboxL( CObexBufObject* aReceivedObject,
+ const TDesC16& aPath,
+ const TUid aMtmID );
+
+ /**
+ * Creates an Outbox entry
+ * @param aMTm Message type id
+ * @param aResourceID Resource id for the message entry text
+ * @return Message server entry.
+ */
+ IMPORT_C static TMsvId CreateOutboxEntryL( const TUid& aMtm, const TInt& aResourceID );
+
+ /**
+ * Deletes an Outbox entry
+ * @param aMessageServerIndex Message server entry
+ * @return None.
+ */
+ IMPORT_C static void DeleteOutboxEntryL( const TMsvId& aMessageServerIndex );
+
+ /**
+ * Create inbox attachment and entries.
+ * @param aBufObject The object to be saved
+ * @param aMtmId MTM Id
+ * @param aMsvIdParent Parent message entry (returned)
+ * @param aFile File to the attachment (returned)
+ * @return None.
+ */
+ IMPORT_C static void CreateInboxAttachmentL(
+ CObexBufObject* &aBufObject,
+ const TUid aMtmId,
+ TMsvId &aMsvIdParent,
+ RFile &aFile);
+
+ /**
+ * Create inbox attachment and entries.
+ * @param aBufObject The object to be saved
+ * @param aMtmId MTM Id
+ * @param aMsvIdParent Parent message entry (returned)
+ * @param aFile File to the attachment (returned)
+ * @param aRemoteBluetoothName sender's bluetooth name.
+ * @return None.
+ */
+ IMPORT_C static void CreateInboxAttachmentL(
+ CObexBufObject* &aBufObject,
+ const TUid aMtmId,
+ TMsvId &aMsvIdParent,
+ RFile &aFile,
+ const TDesC& aRemoteBluetoothName);
+
+ /**
+ * Saves received object to Inbox.
+ * @param aReceivedObject The object to be saved (set to null after remove).
+ * @param aFile File to the attachment
+ * @param aMsvIdParent Parent message entry
+ * @return None.
+ */
+ IMPORT_C static void SaveObjToInboxL(
+ CObexBufObject* &aReceivedObject,
+ RFile &aFile,
+ TMsvId aMsvIdParent);
+
+ /**
+ * Remove unfinished work from inbox
+ * @param aBufObject The object to be saved (set to null after remove)
+ * @param aMsvIdParent Parent message entry
+ * @return None.
+ */
+ IMPORT_C static void RemoveInboxEntriesL(CObexBufObject* &aBufObject, TMsvId aMsvIdParent);
+
+ /**
+ * Gets central repository key's integer value
+ * @param aRepositoryUid Central repository's UID value
+ * @param aId Central repository's ID value
+ * @param aVal Returned integer value
+ * @return Symbian OS errorcode
+ */
+ IMPORT_C static TInt GetCenRepKeyIntValueL(TUid aRepositoryUid, TUint32 aId, TInt& aVal);
+
+ /**
+ * Gets central repository key's string value
+ * @param aRepositoryUid Central repository's UID value
+ * @param aId Central repository's ID value
+ * @param aVal Returned string value
+ * @return Symbian OS errorcode
+ */
+
+ IMPORT_C static TInt GetCenRepKeyStringValueL(TUid aRepositoryUid, TUint32 aId, TDes& aVal);
+
+ /**
+ * Gets Publish & Subscribe key's integer value
+ * @param aCategory Category of the key
+ * @param aKey PUBSUB Key
+ * @param value Returned value
+ * @return Symbian OS errorcode
+ */
+ IMPORT_C static TInt GetPubSubKeyIntValue(TUid aCategory, TUint aKey, TInt& value);
+
+ /**
+ * Create receive buffer and RFile object.
+ * @Since S60 v5.0
+ * @param aFile File to temp file
+ * @param aPath Path The directory in which the file is created
+ * @param aFullName Contains the full path and file name of the file (returned)
+ * @param aReceiveObject Obex object for receive buffer ( returned )
+ * @param aBufSize Size of receive buffer
+ * @return Symbian error code.
+ */
+ IMPORT_C static TInt CreateReceiveBufferAndRFileL ( RFile& aFile,
+ const TDesC& aPath,
+ TFileName& aFullName,
+ CBufFlat* &aReceiveObject,
+ const TInt aBufSize );
+
+ /**
+ * Remove temporary RFile object.
+ * @Since S60 v5.0
+ * @param aFullName Contains the full path and file name of the file
+ * @return Symbian error code.
+ */
+ IMPORT_C static void RemoveTemporaryRFileL ( const TFileName& aFullName );
+
+ /**
+ * Create inbox entries and saves received object to file system
+ * @Since S60 v5.0
+ * @param aReceiveObject Obex object for receive buffer
+ * @param aMtmId MTM Id
+ * @param aMsvIdParent Parent message entry (returned)
+ * @param aFullName The directory and file name in which the file is saved (returned)
+ * @param aFile File handler identical with the one in CreateReceiveBufferAndRFileL()
+ * it must be opened before use.
+ * @return None
+ */
+ IMPORT_C static void SaveFileToFileSystemL(CObexBufObject* &aReceiveObject,
+ const TUid aMtmId,
+ TMsvId& aMsvIdParent,
+ TFileName& aFullName,
+ RFile& aFile,
+ const TDesC& aSenderBluetoothName);
+
+ /**
+ * Add an entry to Inbox
+ * @Since S60 v5.0
+ * @param aMsvIdParent Parent message entry
+ * @param aFullName Contains the full path and file name of the file
+ * @return None
+ */
+ IMPORT_C static void AddEntryToInboxL( TMsvId& aMsvIdParent,
+ TFileName& aFullName);
+
+ /**
+ * Add an entry to Inbox
+ * @Since S60 v5.0
+ * @param aMsvIdParent Parent message entry
+ * @param aFullName Contains the full path and file name of the file
+ * @param aMsvIdArray an array contains a list of TMsvId ( returned )
+ * @return None
+ */
+ IMPORT_C static void AddEntryToInboxL( TMsvId& aMsvIdParent,
+ TFileName& aFullName,
+ RArray<TMsvId>* aMsvIdArray);
+
+ /**
+ * Update entry attachmeent in Inbox
+ * @Since S60 v5.0
+ * @param aFullName Contains the full path and file name of the file
+ * @param aMsvIdParent Parent message entry
+ * @return None
+ */
+ IMPORT_C static void UpdateEntryAttachmentL ( TFileName& aFullName,CMsvEntry* aParentEntry );
+
+
+
+ private:
+
+ class CDummySessionObserver;
+ class TReceivedData;
+
+ /**
+ * Create inbox attachment and entries.
+ * @param aMtmId Mtm ID of the message
+ * @param aMsvIdParent Parent message entry (returned)
+ * @param aFile File to the attachment (returned)
+ * @param aRemoteBluetoothName sender's bluetooth name.
+ */
+ static void DoCreateInboxAttachmentL(
+ const TUid aMtmId,
+ TMsvId &aMsvIdParent,
+ RFile &aFile,
+ const TDesC& aRemoteBluetoothName = KNullDesC);
+
+ /**
+ * Deletes Obex Buf Object buffer
+ * @param aBufObject The buffer object
+ * @return None.
+ */
+ static void RemoveObexBuffer(CObexBufObject* &aBufObject);
+
+ /*
+ * Creates Msv session
+ * @param aSessionObs Session observer
+ * @param aMsvSession Session
+ */
+ static void CreateMsvSessionLC(
+ CDummySessionObserver* &aSessionObs,
+ CMsvSession* &aMsvSession);
+
+ /*
+ * Creates Msv session to selected destination
+ * @param aSessionObs Session observer
+ * @param aMsvSession Session
+ * @param aDestination Destination
+ * @param aMsvId Destination type
+ */
+ static void CreateMsvSessionLC(
+ CDummySessionObserver* &aSessionObs,
+ CMsvSession* &aMsvSession,
+ CMsvEntry* &aDestination,
+ TMsvId aMsvId);
+
+ /**
+ * Gets current time
+ * @return None.
+ */
+ static TTime GetCurrentTime();
+
+ /**
+ * Stores message as rich text
+ * @param aParentEntry Parent entry
+ * @param aFile File to store to the message entry's store
+ * @return None.
+ */
+ static void StoreAsRichTextL(CMsvEntry* aParentEntry, RFile& aFile);
+
+ /**
+ * Updates attachment's information
+ * @param aRecData Received obex data
+ * @param aAttachEntry Attachment entry
+ * @param aAttachInfo Attachment information
+ * @param aStore Message store (attachment)
+ * @return None.
+ */
+ static void UpdateAttachmentInformationL(
+ TReceivedData& aRecData,
+ CMsvEntry* aAttachEntry,
+ CMsvAttachment* aAttachInfo,
+ CMsvStore* aStore);
+
+ /**
+ * Finalises the parent entry to contain correct data
+ * @param aParentEntry Parent entry
+ * @param aReceivedData Received obex data
+ * @param aStore Attachment's store
+ * @param aIsBioMsg Is BIO message?
+ * @return None.
+ */
+ static void FinaliseMessageL(
+ CMsvEntry* aParentEntry,
+ TReceivedData& aRecData,
+ CMsvStore* aStore,
+ TBool aIsBioMsg);
+
+ /**
+ * Finalises the parent entry to contain correct data
+ * @Since v5.0
+ * @param aParentEntry Parent entry
+ * @param aStore Attachment's store
+ * @param aFileEntry a file entry
+ * @param aFileNameParser a file name parser
+ * @return None.
+ */
+ static void FinaliseMessageL(
+ CMsvEntry* aParentEntry,
+ CMsvStore* aStore,
+ TEntry& aFileEntry,
+ TParse& aFileNameParser);
+
+ /**
+ * Stores BIO message to parent entry's body and updates information
+ * @param aBioDB BIO database for a BIO message
+ * @param parentEntry Parent entry
+ * @param aFile File to save to parent entry's body
+ * @return None.
+ */
+ static void StoreAndUpdateBioMessageL(
+ CBIODatabase* aBioDB,
+ TUid aBioMsgId,
+ CMsvEntry* parentEntry,
+ RFile& aFile);
+
+ /**
+ * Recognises MIME type of a file
+ * @param aFile File to recognise
+ * @param aAttachInfo Attachment information
+ * @return None.
+ */
+ static void RecogniseObjectsL(
+ TFileName& aFileName,
+ CMsvAttachment* aAttachInfo);
+
+ /**
+ * Saves MIME type and gets BIO for that MIME type
+ * @param aFile File to be recognised
+ * @param aFsSess File session to use for BIO database
+ * @param aAttachInfo Attachment information
+ * @param aBioMsgId Returned BIO message's ID
+ * @return BIO database for a MIME type (null if not BIO)
+ */
+ static CBIODatabase* SaveMimeAndGetBioLC(
+ TFileName& aFileName,
+ RFs& aFsSess,
+ CMsvAttachment* aAttachInfo,
+ TUid &aBioMsgId);
+
+ /**
+ * Constructs rich text
+ * @return Text in rich text.
+ */
+ static CRichText* ConstructRichTextLC();
+
+ /**
+ * Makes a valid OS filesystem filename by removing illegal characters
+ * @param aFileSession File server filesession
+ * @param aFileName File name to check and modify
+ * @return None.
+ */
+ static void MakeValidFileName(RFs& aFileSession, TDes& aFileName);
+
+ /**
+ * Converts text from UTF-8 to two-byte Unicode
+ * @param aText destination where to store the converted text
+ * @param aType source of conversion in UTF-8
+ * @return None.
+ */
+ static void SetBioDataTextL(TBioMsgIdText& aText, const TDesC8& aType);
+
+ /**
+ * Converts text from UTF-8 to two-byte Unicode
+ * @param aDetails destination where to store the converted text
+ * @param aType source of conversion in UTF-8
+ * @return None.
+ */
+ static void SetDetailsLC(
+ TPtrC& aDetails,
+ const TDesC8& aType);
+
+
+ /**
+ * Rename file and move file if needed.
+ * @Since S60 v5.0
+ * @param anOldFileName a file name with absolute path ( returned )
+ * @param aNewFileName new path where file will be moved to
+ * @param aFileSession a file session
+ * @return None
+ */
+ static TInt RenameFileL(TFileName& aFileName,
+ TFileName& aNewFileName,
+ const TDesC& aNewPath,
+ RFs& aFileSession);
+
+ /**
+ * Rename filename with a segement number.
+ * @Since S60 v5.0
+ * @param aFilename name of the file ( returned )
+ * @param aSegmentNum number used to modifed the file name
+ * @param aSegmentString string will be added to filename to solve the duplicate filenames
+ * @return None.
+ */
+ static TInt RenameFileWithSegmentNumL(
+ TDes& aFileName,
+ TInt aSegmentNum,
+ TDes& aSegementString);
+
+ /**
+ * FixExtremeLongFileName
+ * @param aFileName extreme long file name (returned)
+ * @param aDriveAndPath file drive and path
+ * @return None
+ */
+ static void FixExtremeLongFileName(TFileName& aExtremeLongFileName, const TDesC& aDriveAndPath);
+
+
+ /**
+ * A dummy class for opening CMsvSession.
+ */
+ class CDummySessionObserver : public CBase , public MMsvSessionObserver
+ {
+ public:
+ void HandleSessionEventL( TMsvSessionEvent/*aEvent*/,
+ TAny* /*aArg1*/,
+ TAny* /*aArg2*/,
+ TAny* /*aArg3*/ ) {};
+ };
+
+ /**
+ * Class for obex received data
+ */
+ class TReceivedData
+ {
+ public:
+ TInt bytesReceived;
+ TTime recTime;
+ TFileName msgName;
+ };
+
+ };
+
+#endif // OBEXUTILSMESSAGEHANDLER_H
+
+// End of File