diff -r 000000000000 -r 72b543305e3a messagingappbase/obexmtms/obexmtm/obexutil/include/obexMtmUtil.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingappbase/obexmtms/obexmtm/obexutil/include/obexMtmUtil.h Thu Dec 17 08:44:11 2009 +0200 @@ -0,0 +1,225 @@ +// Copyright (c) 2001-2009 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: +// $Workfile: obexMtmUtil.h $ +// $Author: Stevep $ +// $Revision: 10 $ +// $Date: 25/03/02 8:49 $ +// +// + + +#ifndef __OBEXMTMUTIL_H__ +#define __OBEXMTMUTIL_H__ + + +#include + +#include // NearestLanguageFile +#include +#include // ConeUtils::FileExists +#include // CApaApplication::GenerateFileName +#include // RApaLsSession <-- data recognition. + +#include // Richtext +#include // CharConv +#include // Clipboard + +// Obex +#include + +// MS +#include +#include +#include +#include + +extern const TInt KMaxObexPasswordLength; +const TUid KObexFileNameStreamUid = {0x1000AAC5}; + +// temporary IDs to indicate either a filename or a headerlist entry in the stream +const TInt32 KObexFileNameStreamFileNameUid = 0x1000; +const TInt32 KObexFileNameStreamHeaderListUid = 0x1001; + +class CObexHeaderList; + +// +// Container class for an array with descriptors and header lists associated with it +// +class CObexMtmFileNameWithHeaders : public CBase +/** +@internalTechnology +@released +*/ + { +public: + /** + * Canonical NewL factory function. + * + * @return an empty CObexMtmFileNameWithHeaders class + * @leave KErrXXX system wide error codes + */ + IMPORT_C static CObexMtmFileNameWithHeaders* NewL(); + + /** + * Destructor. Will destroy the data pointed to by the 2 member pointers. + */ + CObexMtmFileNameWithHeaders::~CObexMtmFileNameWithHeaders(); + +private: + /** + * Constructor. + */ + CObexMtmFileNameWithHeaders(); + +public: + /** + * iFileName points to a descriptor (owned by this class) which holds the filename + */ + TDesC16 *iFileName; + /** + * iHeaderList points to a CObexHeaderList class containing the set of headers for this file. + */ + CObexHeaderList *iHeaderList; + }; + +// +// Class to allow an arbitrary number of filenames to be saved to a CMsvEntry +// +// For obex msgs the obex objects to send are stored in files and not in the msg body. +// These files may be copied into messaging and attached to the msg as "proper" +// attachments, OR the msg itself can contain a list of filenames of files that exist +// anywhere on the filesystem. This class is used in the latter case to externalise/ +// internalise filenames to/from the msg entry. +// +// +typedef RPointerArray RObexMtmFileNameWithHeadersArray; + +class CObexMtmFileNameExternaliser : public CBase +/** Allows an arbitrary number of filenames to be saved to a CMsvEntry. + +@publishedPartner +@released +*/ +//this class was originally classified as internal technology but was changed to publised partner as one licensee used +//the static function ExternaliseAndCommit1FileNameL() in its code before the API classification work was done + { +public: //static methods + + /** + * Static function to write one and only one filename to the message store, then finalise and commit it. This function + * should be called ONCE ONLY. To externalise more than one filename, instantiate this class and use ExternaliseFileNameL() + * followed by CommitStoreL(). + * @param aEntry the entry whose store is to be written to + * @param aDes The filename to write to the store + * @leave KErrXXX system-wide error codes + */ + + IMPORT_C static void ExternaliseAndCommit1FileNameL(CMsvEntry* aEntry, const TDesC16* aDes); + + /** + * Static function to read in one filename from the store. + * + * @param aEntry entry to read the filename from + * @param aDes Descriptor to receive the new filename. Any existing data will be overwritten. MUST be long enough to contain the name. + * @leave KErrXXX system wide error codes. + */ + + IMPORT_C static void Internalise1FileNameL(CMsvEntry* aEntry, TDes16* aDes); + + /** + * Static function to get the filenames stored within the message entry. The returned array is pushed onto the cleanup + * stack. + * + * @param aMessageStore Store from which the names are to be read + * @return Array of filenames, pushed onto the cleanup stack. + * @leave System wide error codes + */ + + IMPORT_C static RObexMtmFileNameWithHeadersArray* InternaliseFileNamesLC(CMsvStore& aMessageStore); + +public: //non-static methods + + /** + * Canonical NewL factory function. + * + * @param aSession A messaging server session + * @param aId TMsvId of the entry to externalise/internalise to/from. This association is fixed for the lifetime of this instance of the class. + * @return a newly constucted CObexMtmFileNameExternaliser + * @leave KErrXXX system wide error codes + */ + + IMPORT_C static CObexMtmFileNameExternaliser* NewL(CMsvSession* aSession, TMsvId aId); + + /** + * Destructor. Will revert the stream to its original state if the store hasn't been comitted. + */ + + CObexMtmFileNameExternaliser::~CObexMtmFileNameExternaliser(); + + /** + * Initialises the store of the given entry, ready for reading or writing. + * + * @param aId The TMsvId of the entry whose store should be initialised. + * @leave KErrXXX system wide error codes. + */ + + IMPORT_C void InitialiseStoreL(TMsvId aId); + + /** + * Externalises a single filename to the associated entry's message store. + * + * @param aFileName the filename to externalise. + * @leave KErrXXX system-wide error codes. + */ + + IMPORT_C void ExternaliseFileNameL(const TDesC16* aFileName); + + /** + * Externalises a pair consisting of a single filename and an obex header list to the associated entry's message store. + * + * @param aFileName the filename to externalise. + * @param aHeaderList the header list to externalise. + * @leave KErrXXX system-wide error codes. + */ + + IMPORT_C void ExternaliseFileNameAndHeadersL(const TDesC16* aFileName, const CObexHeaderList* aHeaderList); + + /** + * Finalises and commits the store. This function MUST be called once all of the filenames have been externalised, and not + * before. If it is not called, any changes will be lost and the store will revert to its former state. + * + * @leave KErrXXX system wide error codes. + */ + + IMPORT_C void CommitStoreL(); + +private: + + /** + * Constructor + * + * @param aSession A messaging server session + */ + + CObexMtmFileNameExternaliser(CMsvSession* aSession); + +private: + CMsvSession* iSession; //< Session with the message server + CMsvEntry* iEntry; //< Message entry + CMsvStore* iMessageStore; //< Direct interface to the message store associated with a particular entry + RMsvWriteStream iMessageWriteStream; //< Accesses streams in a message store with write access + TBool iHaveCommitted; //< Indicates whether the message write stream has committed changes + }; + +#endif // __OBEXMTMUTIL_H__