williamr@2: // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@2: // All rights reserved. williamr@2: // This component and the accompanying materials are made available williamr@2: // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members williamr@2: // which accompanies this distribution, and is available williamr@2: // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html". williamr@2: // williamr@2: // Initial Contributors: williamr@2: // Nokia Corporation - initial contribution. williamr@2: // williamr@2: // Contributors: williamr@2: // williamr@2: // Description: williamr@2: // williamr@2: williamr@2: #ifndef __APGDOOR_H__ williamr@2: #define __APGDOOR_H__ williamr@2: williamr@2: #if !defined(__E32STD_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__E32BASE_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__S32STD_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__GDI_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__APPARC_H__) williamr@2: #include williamr@2: #endif williamr@2: #if !defined(__APADBASE_H__) williamr@2: #include williamr@2: #endif williamr@2: williamr@2: /** williamr@2: @internalAll williamr@2: */ williamr@2: #ifdef _UNICODE williamr@2: #define KUidApaDoorDocStream KUidApaDoorDocStream16 williamr@2: #else williamr@2: #define KUidApaDoorDocStream KUidApaDoorDocStream8 williamr@2: #endif williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: @deprecated williamr@2: */ williamr@2: const TUid KUidApaDoorDocStream8={0x10000144}; williamr@2: williamr@2: /** williamr@2: @internalComponent williamr@2: */ williamr@2: const TUid KUidApaDoorDocStream16={0x10003A35}; williamr@2: williamr@2: // classes defined: williamr@2: class CApaDoor; williamr@2: class TApaPictureFactory; williamr@2: // williamr@2: // classes referenced: williamr@2: class CEmbeddedStore; williamr@2: // williamr@2: williamr@2: class CApaDoor : public CApaDoorBase williamr@2: /** A wrapper for an embedded document that can be displayed in a user interface williamr@2: as an icon or a glass door. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C static CApaDoor* NewLC(RFs& aFs, CApaDocument& aDoc,const TSize& aDefaultIconSizeInTwips); // call to create a new door in iconic format - restoration is achieved with TApaPictureFactory williamr@2: IMPORT_C static CApaDoor* NewL(RFs& aFs, CApaDocument& aDoc,const TSize& aDefaultIconSizeInTwips); // call to create a new door in iconic format - restoration is achieved with TApaPictureFactory williamr@2: IMPORT_C static CApaDoor* NewL(RFs& aFs, const CStreamStore& aStore,TStreamId aStreamId,CApaProcess& aProcess); // restoring constructor called by TApaPictureFactory williamr@2: // williamr@2: IMPORT_C void SetFormatToIconL(); williamr@2: IMPORT_C void SetFormatToGlassL(); williamr@2: IMPORT_C void SetFormatToTemporaryIconL(TBool aEnabled=ETrue); williamr@2: // williamr@2: IMPORT_C CApaDocument* DocumentL(TBool aCheckPassword=EFalse); // returns a pointer to the doc, restoring it if necessary. Checks password if required. williamr@2: inline TDesC* Caption()const; williamr@2: IMPORT_C TUid AppUidL()const; williamr@2: // williamr@2: // persistence methods williamr@2: IMPORT_C void RestoreL(const CStreamStore& aStore,TStreamId aHeadStreamId); williamr@2: TStreamId StoreL(CStreamStore& aStore) const; williamr@2: // williamr@2: IMPORT_C ~CApaDoor(); williamr@2: // williamr@2: // from CPicture williamr@2: void Draw(CGraphicsContext& aGc,const TPoint& aTopLeft,const TRect& aClipRect, williamr@2: MGraphicsDeviceMap* aMap)const; // draws according to current iPicFormat williamr@2: void DetachFromStoreL(TDetach aDegree=EDetachFull); //lint !e1735 Virtual function has default parameter - Must use the same default as declared by CPicture williamr@2: void GetOriginalSizeInTwips(TSize& aSize)const; williamr@2: void SetScaleFactor(TInt aScaleFactorWidth,TInt aScaleFactorHeight); williamr@2: void SetCropInTwips(const TMargins& aMargins); williamr@2: TPictureCapability Capability() const; williamr@2: void GetCropInTwips(TMargins& aMargins) const; williamr@2: TInt ScaleFactorWidth() const; williamr@2: TInt ScaleFactorHeight() const; williamr@2: private: williamr@2: CApaDoor(RFs& aFs, CApaProcess& aProcess); williamr@2: CApaDoor(RFs& aFs, CApaDocument& aDoc,const TSize& aDefaultIconSizeInTwips); williamr@2: void ConstructL(); williamr@2: // williamr@2: void SetIconSizeInTwips(TSize aSize); // for use of factory williamr@2: // williamr@2: void StoreDocL(CPersistentStore& aStore)const; williamr@2: void RestoreDocL(const CPersistentStore& aStore); williamr@2: void RestoreDoorStateL(const CStreamStore& aStore,const CStreamDictionary& streamDic); williamr@2: static CStreamDictionary* ReadStreamDictionaryLC(const CStreamStore& aStore,TStreamId aStreamId); williamr@2: static void CopyStoreL(const CEmbeddedStore& aSourceStore,RWriteStream& aTargetStream); williamr@2: void ExternalizeStateStreamL(CStreamStore& aStore,CStreamDictionary& aStreamDict)const; williamr@2: void InternalizeStateStreamL(const CStreamStore& aStore,const CStreamDictionary& aStreamDict,TSize aDefaultIconSize); williamr@2: // williamr@2: // required so CPicture's can be swizzled williamr@2: void ExternalizeL(RWriteStream& aStream)const; williamr@2: // from CApaDoorBase williamr@2: virtual TSize GlassDoorSize()const; williamr@2: TUid AppUidFromStreamL() const; williamr@2: private: williamr@2: RFs& iFs; williamr@2: HBufC* iAppCaption; // name of the app used to create the embedded object williamr@2: CApaProcess* iApaProcess; williamr@2: CApaDocument* iApaDoc; williamr@2: CPicture* iPicture; // the current view of the door, either iconic or glass williamr@2: CEmbeddedStore* iStore; // store containing the doc williamr@2: CBufSeg* iStoreHost; // the host for the embedded store, if the door has been detached from its originating store williamr@2: __MUTABLE TSize iIconSizeInTwips; williamr@2: // williamr@2: friend class TApaPictureFactory; williamr@2: }; williamr@2: williamr@2: williamr@2: class TApaPictureFactory : public MPictureFactory williamr@2: // Recognizes KUidPictureTypeDoor and creates CApaDoor pictures williamr@2: /** A factory class for instantiating and restoring an application's door. williamr@2: williamr@2: A door factory object is constructed by the UI environment and can be accessed williamr@2: by calling CEikonEnv::PictureFactory(). williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: @see CEikonEnv::PictureFactory() williamr@2: @see CApaDoor */ williamr@2: { williamr@2: public: williamr@2: IMPORT_C TApaPictureFactory(CApaProcess* aAppProcess); williamr@2: inline void SetIconSize(TSize aIconSizeInTwips); williamr@2: // williamr@2: // from MPictureFactory williamr@2: IMPORT_C void NewPictureL(TPictureHeader& aPictureHeader,const CStreamStore& aPictureStore)const; // used to create CApaDoor's during document restore only williamr@2: protected: williamr@2: IMPORT_C TApaPictureFactory(); williamr@2: williamr@2: private: williamr@2: CApaProcess* iApaProcess; williamr@2: TSize iIconSize; williamr@2: TInt iSpare; williamr@2: }; williamr@2: williamr@2: williamr@2: // williamr@2: // inlines williamr@2: // williamr@2: williamr@2: inline TDesC* CApaDoor::Caption()const williamr@2: /** Gets the name of the application with which the embedded document is associated. williamr@2: williamr@2: @return A pointer to a descriptor containing the name of the application. */ williamr@2: { return iAppCaption; } williamr@2: williamr@2: inline void TApaPictureFactory::SetIconSize(TSize aIconSizeInTwips) williamr@2: /** Sets the size of the icon. williamr@2: williamr@2: @param aIconSizeInTwips The size of the icon, in twips. */ williamr@2: { iIconSize = aIconSizeInTwips; } williamr@2: williamr@2: #endif