diff -r 238255e8b033 -r 84d9eb65b26f messagingapp/msgutils/unidatautils/unidatamodel/inc/UniObject.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/messagingapp/msgutils/unidatautils/unidatamodel/inc/UniObject.h Mon May 03 12:29:07 2010 +0300 @@ -0,0 +1,628 @@ +/* +* Copyright (c) 2005 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: +* CUniObject, Storage for single attachment in presentation. +* +* +*/ + + +#ifndef __UNIOBJECT_H +#define __UNIOBJECT_H + +// INCLUDES + +#include +#include // for TMsvId +#include + +#include +#include + +#include + +#include + +// CONSTANTS +const TUid KUidAttachmentIndication = {0x10282CB0}; + +// MACROS + +// FORWARD DECLARATIONS +class CUniMimeInfo; +class CMsgMediaInfo; +class CUniDrmInfo; +class CBaseMtm; +class CUniDataUtils; +class CMsvStore; +class MMsvAttachmentManager; +class CUniObject; +class CDRMNotifier; +// DATA TYPES + +// FUNCTION PROTOTYPES + +// CLASS DECLARATION + +/** +* MUniObjectSaveObserver - Callback API for object saving. +* +* @since 3.1 +*/ +class MUniObjectSaveObserver + { + public: + virtual void ObjectSaveReady( TInt aError ) = 0; + }; + +enum TUniObjectEvent + { + EUniObjectEventDrmRightsChanged = 0 + }; + +class MUniObjectObserver + { + public: + virtual void HandleUniObjectEvent( CUniObject& aUniObject, + TUniObjectEvent aUniEvent ) = 0; + }; + +/** +* CUniObject - Representation of a single attachment of a message. +* +* @lib UniDataModel.lib +* @since 3.1 +*/ +class CUniObject : public CActive, + public MDRMEventObserver + + { + + public: // New methods + + /** + * Factory method that creates this object + * from an attachment. + * + * @since 3.1 + * @param aMtm IN reference to client mtm + * @param aMedia IN initialized media info object - takes ownership! + * @param aManager IN reference to attachment manager + * @param aAttachmentId IN id of the attachment from + * which to create the object + * @return Pointer to instance in cleanup stack + */ + IMPORT_C static CUniObject* NewLC( + RFs& aFs, + CBaseMtm& aMtm, + CUniDataUtils& aData, + CMsgMediaInfo* aMedia, + MMsvAttachmentManager& aManager, + CMsvAttachment& aAttachment ); + + /** + * Factory method that creates this object + * from an attachment. + * + * @since 3.1 + * @param aMtm IN reference to client mtm + * @param aMedia IN initialized media info object - takes ownership! + * @param aAttachmentId IN id of the attachment from + * which to create the object + * @return Pointer to instance + */ + IMPORT_C static CUniObject* NewL( + RFs& aFs, + CBaseMtm& aMtm, + CUniDataUtils& aData, + CMsgMediaInfo* aMedia, + MMsvAttachmentManager& aManager, + CMsvAttachment& aAttachment ); + + /** + * Factory method that creates this object + * from a file. + * + * @since 3.1 + * @param aData IN reference to MsgData object + * @param aMedia IN initialized media info object - takes ownership! + * @return Pointer to instance in cleanup stack + */ + IMPORT_C static CUniObject* NewLC( + RFs& aFs, + CBaseMtm& aMtm, + CUniDataUtils& aData, + CMsgMediaInfo* aMedia ); + + /** + * Factory method that creates this object + * from a file. + * + * @since 3.1 + * @param aData IN reference to MsgData object + * @param aMedia IN initialized media info object - takes ownership! + * @return Pointer to instance + */ + IMPORT_C static CUniObject* NewL( + RFs& aFs, + CBaseMtm& aMtm, + CUniDataUtils& aData, + CMsgMediaInfo* aMedia ); + + /** + * Destructor + * + * @since 3.1 + */ + virtual ~CUniObject(); + + /** + * Save + * Save the object to message store. + * If leave occurs, attachment is cleaned up from the + * message store. + * + * @since 3.1 + * @param aObserver IN operation observer + * @param aSaveType IN save type + */ + virtual void Save( + MUniObjectSaveObserver& aObserver, + CMsvAttachment::TMsvAttachmentType aSaveType ); + + /** + * Remove from store + * Removes attachment from message store. + * + * @since 3.1 + * @param aMtm IN reference to MMS client mtm + */ + virtual void RemoveFromStoreL(); + + /** + * AttachmentId + * Accessor. + * + * @since 3.1 + * @return Attachment id of the object + */ + inline TMsvAttachmentId AttachmentId() const; + + /** + * MimeInfo + * Accessor. + * + * @since 3.1 + * @return Pointer to the object's mime header class + */ + inline CUniMimeInfo* MimeInfo() const; + + /** + * DrmInfo + * Accessor. + * + * @since 3.1 + * @return Pointer to the object's mime header class + */ + inline CUniDrmInfo* DrmInfo() const; + + /** + * MimeType + * Returns the mime type of the object. Use this instead + * of MimeInfo's or MediaInfo's mime type unless you are + * absolutely sure what you are doing. + * + * @since 3.1 + * @return Mime type of the object. + */ + IMPORT_C TPtrC8 MimeType() const; + + /** + * MediaInfo + * Accessor. + * + * @since 3.1 + * @return Pointer to the object's media info class + */ + inline CMsgMediaInfo* MediaInfo() const; + + /** + * MediaType + * Returns the media type of the object. Use this instead + * of MediaInfo's media type unless you are absolutely + * sure what you are doing. + * + * @since 3.1 + * @return Media type of the object. + */ + IMPORT_C TMsgMediaType MediaType() const; + + /* + * Size + * + * @since 3.1 + * @param aWithoutHeaders IN if ETrue include MIME headers' sizes + * if EFalse count only file sizes + * @return Size of the object in bytes + */ + virtual TInt Size( TBool aWithoutHeaders = ETrue ); + + /** + * Corrupted + * Accessor. + * + * @since 3.1 + * @return ETrue, if object corrupted, + * EFalse otherwise + */ + inline TBool Corrupted() const; + + /** + * SetCorrupted + * Mutator. + * + * @since 3.1 + * @param aCorrupted IN ETrue to mark object corrupted + */ + inline void SetCorrupted( TBool aCorrupted ); + + /** + * StoreState + * Accessor. + * + * @since 3.1 + * @return Store state of the object: + * EStoreStateAttachment if object is stored into message store and "visible" + * EStoreStateTemporary if is not yet in message store + * EStoreStateHidden if object is stored into message store and "hidden" + */ + //inline TMsgObjectStoreState StoreState() const; + + /** + * SetReferenceCount + * Mutator. + * + * @since 3.1 + * @param aCount IN number of times the object is referenced in + * the message (normally in the SMIL). + */ + inline void SetReferenceCount( TInt aCount ); + + /** + * ReferenceCount + * Accessor. + * + * @since 3.1 + * @return Number of times the object is referenced in + * the message (normally in the SMIL). + */ + inline TInt ReferenceCount() const; + + /** + * SetRegion + * Mutator. + * + * @since 3.1 + * @param region object is in SMIL + */ + inline void SetRegion( TUniRegion aRegion ); + + /** + * Region + * Accessor. + * + * @since 3.1 + * @return region object is in SMIL + */ + inline TUniRegion Region() const; + + /** + * SetMediaTypeBySmilTag + * Mutator. + * + * @since 3.1 + * @param media type by SMIL media tag + */ + inline void SetMediaTypeBySmilTag( TMsgMediaType aMediaType ); + + /** + * ReferenceCount + * Accessor. + * + * @since 3.1 + * @return media type by SMIL media tag + */ + inline TMsgMediaType MediaTypeBySmilTag() const; + + /** + * SetUniqueControlHandle + * Mutator. + * + * @since 3.2 + * @param UniqueControlHandle, -1 for "resetting". + */ + inline void SetUniqueControlHandle( TInt aUniqueControlHandle ); + + /** + * UniqueControlHandle + * Accessor. + * + * @since 3.2 + * @return UniqueControlHandle, -1 if not set. + */ + inline TInt UniqueControlHandle() const; + + /** + * SetAttachment + * Mutator. + * + * @since 3.2 + * @param aObjectAttachment ETrue if object is attachment, otherwise EFalse + */ + inline void SetAttachment( TBool aObjectAttachment ); + + /** + * Attachment + * Accessor. + * + * @since 3.2 + * @return ETrue if object is attachment, otherwise EFalse + */ + inline TBool Attachment() const; + + /** + * IsSaved + * Accessor. + * + * @since 3.2 + * @return Information whether this object has been saved into file system + * in Viewer. + */ + inline TBool IsSaved( ); + + /** + * IsSaved + * Mutator. + * + * @since 3.2 + * @param aSaved ETrue attachment has been saved + * EFalse attachment has not been saved + */ + inline void SetSaved( TBool aSaved ); + + /** + * IsDrmRightsWhenLoaded. Function is applicable only, if DrmInfo exists. + * Accessor. + * + * @since 5.0 + * @return Checks whether object had DRM rights when this object was loaded + * into screen. If last DRM rights were consumed during loading, + * it returns ETrue. + * + */ + inline TBool IsDrmRightsWhenLoaded( ) const; + + /** + * ResolveDrmRightsWhenLoadedL. Saves information whether this object had DRM + * rights when slide having the object was loaded. Uses + * CDrmInfo::EvaluateRights() to resolve status + * Mutator. + * + * @since 5.0 + * + */ + IMPORT_C void ResolveDrmRightsWhenLoadedL( ); + + /** + * SetDrmRightsWhenLoadedL. Saves information whether this object had DRM + * rights when slide having the object was loaded. + * Mutator. + * + * @since 5.0 + * @param aRights ETrue: objects had rights, which were already consumed or if not consumed, + * have still rights left + * EFalse: rights have not been consumed and they are not left + * + */ + IMPORT_C void SetDrmRightsWhenLoaded( TBool aRights ); + + /** + * IsDrmRightsWhenLoadedObjects. Function is applicable only, if DrmInfo exists. + * Accessor. + * + * @since 5.0 + * @return Checks whether object had DRM rights when this object was loaded + * into screen in the Objects view. If last DRM rights were consumed during loading, + * it returns ETrue. + * + */ + inline TBool IsDrmRightsWhenLoadedObjects( ) const; + + /** + * SetDrmRightsWhenLoadedObjects. Saves information whether this object had DRM + * rights when slide having the object was loaded into screen in the + * Objects view. + * Mutator. + * + * @since 5.0 + * @param aRights ETrue: objects had rights, which were already consumed or if not consumed, + * have still rights left + * EFalse: rights have not been consumed and they are not left + * + */ + IMPORT_C void SetDrmRightsWhenLoadedObjects( TBool aRights ); + + /** + * Sets observer of UniObject events. Several observers are supported at the same time. + * Mutator. + * + * @since 5.0 + * @param aObserver observer + * + */ + IMPORT_C void SetObserverL( MUniObjectObserver* aObserver ); + + /** + * Removes observer of UniObject events. + * Accessor. + * + * @since 5.0 + * + */ + IMPORT_C void RemoveObserver( MUniObjectObserver* aObserver ); + + protected: + + /** + * From CActive + */ + void DoCancel(); + + /** + * From CActive + */ + void RunL(); + + /** + * From CActive + */ + TInt RunError( TInt aError ); + + protected: + + /** + * Constructor. + * + * @since 3.1 + */ + CUniObject( + RFs& aFs, + CBaseMtm& aMtm, + CUniDataUtils& aData, + CMsgMediaInfo* aMedia ); + + /** + * 2nd phase constructor. + * + * @since 3.1 + */ + void ConstructL(); + + /** + * 2nd phase constructor. + * + * @since 3.1 + * @param aManager IN reference to attachment manager + * @param aAttachmentId IN id of the attachment from + * which to create the object + */ + void ConstructFromAttachmentL( + MMsvAttachmentManager& aManager, + CMsvAttachment& aAttachment ); + + /** + * CreateMimeInfoL + * Create mime info for the object from the file information + * and in-parameters. + * + * @since 3.1 + */ + void CreateMimeInfoL(); + + /** + * CreateAttachmentL + * Creates an attachment to message store. + * If leave occurs, attachment is cleaned up from the + * message store. + * + * @since 3.1 + */ + void CreateAttachmentL( ); + + /** + * SetHiddenL + * Sets attachment "hidden" or "visible" + * "Hidden" means InPreparation flag is set on and + * "visible" means InPreparation flag is set off + * Not to be called for "temporary" object + * + * @since 3.1 + * @param aHidden IN ETrue for "hidden", EFalse for "visible" + */ + //void SetHiddenL( TBool aHidden ); + + virtual void DoSaveL(); + + void StartObjectSaveL(); + void FinalizeObjectSaveL(); + + void CompleteSelf(); + + /// From MDRMEventObserver + virtual void HandleEventL( MDRMEvent* aEvent ); + + + protected: // data + + enum TMsgObjectSaveState + { + EObjectSavingIdle, + EObjectCreatingAttachment + }; + + enum TMsgObjectFlags + { + EObjectCorrupted = 0x1, + EObjectAttachment = 0x2, + EObjectDrmRightsWhenLoaded = 0x4, + EObjectDrmRightsWhenLoadedObjects = 0x8 + }; + + RFs& iFs; + CBaseMtm& iMtm; + CUniDataUtils& iData; + + TInt iSupportedFeatures; + + TMsvAttachmentId iAttachmentId; // Attachment id of object. Can be id to Link file in store or to real atta. + + CUniMimeInfo* iMimeInfo; // Contains objects mime headers. + CMsgMediaInfo* iMediaInfo; // Contains objects media information. + CUniDrmInfo* iDrmInfo; + TInt iObjectFlags; + TInt iReferenceCount; + //TMsgObjectStoreState iStoreState; + TUniRegion iRegion; + TMsgMediaType iMediaTypeBySmilTag; + TInt iUniqueControlHandle; + + MUniObjectSaveObserver* iObserver; + CMsvAttachment::TMsvAttachmentType iSaveType; + + MMsvAttachmentManager* iManager; + CMsvAttachment* iAttachment; + CMsvStore* iEditStore; + TInt iSaveState; + + TBool iSavedToFs; + RFile iFileHandle; + + CDRMNotifier* iDrmNotifier; + CArrayPtrFlat* iObservers; + + }; + +#include + +#endif // __UNIOBJECT_H