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@4: // under the terms of "Eclipse Public License v1.0" williamr@2: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.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 __EIKDOC_H__ williamr@2: #define __EIKDOC_H__ williamr@2: williamr@2: #include williamr@2: #include williamr@2: williamr@4: #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS williamr@4: #include williamr@4: #endif williamr@4: williamr@2: class CEikAppUi; williamr@2: class CEikApplication; williamr@2: class CApaWindowGroupName; williamr@2: williamr@2: williamr@2: /** The base class for all GUI applications' documents. williamr@2: williamr@2: In file-based applications, the document represents the data that relates to a williamr@2: particular instance of the application, and should handle storing and restoring williamr@2: it. In all applications, whether file-based or not, the document is used to create williamr@2: the application UI. williamr@2: williamr@2: A class derived from CEikDocument must be defined by each GUI application, and minimally williamr@2: it must implement CreateAppUiL(). Note that UIs may implement their own document base class, williamr@2: derived from CEikDocument, which applications may need to derive from instead. williamr@2: williamr@2: The document is created by the application's CreateDocumentL() function. williamr@2: williamr@2: @publishedAll williamr@2: @released williamr@2: @see CEikApplication::CreateDocumentL() williamr@2: @see CEikAppUi */ williamr@2: class CEikDocument : public CApaDocument, public MSaveObserver williamr@2: { williamr@2: public: // new functions williamr@2: /** Constructs the application UI. williamr@2: williamr@2: This function is called by the UI framework during application start-up. It should williamr@2: only carry out first phase construction of the app UI, in other words, using new(ELeave). williamr@2: It should not call the app UI's ConstructL(), because the UI framework is responsible williamr@2: for this. Note also that the UI framework takes ownership of the app UI, so the williamr@2: document does not need to destroy it. williamr@2: williamr@2: @return A partially-constructed app UI object. */ williamr@2: virtual CEikAppUi* CreateAppUiL()=0; williamr@2: IMPORT_C virtual CFileStore* OpenFileL(TBool aDoOpen,const TDesC& aFilename,RFs& aFs); williamr@2: IMPORT_C void PrepareToEditL(MApaEmbeddedDocObserver* aObserver,TBool aReadOnly); williamr@2: IMPORT_C void PrepareToEditL(); williamr@2: IMPORT_C void SetAppFileMode(TUint aMode); williamr@2: IMPORT_C TUint AppFileMode() const; williamr@2: IMPORT_C virtual void UpdateTaskNameL(CApaWindowGroupName* aWgName); williamr@2: IMPORT_C const TApaAppCaption& AppCaption() const; williamr@2: IMPORT_C void SetChanged(TBool aHasChanged); williamr@2: IMPORT_C void SetEditStoreL(CStreamStore* aStore); williamr@2: void SetEditStoreWithoutAppUiNotificationL(CStreamStore* aStore); williamr@2: inline CStreamStore* EditStore() const; williamr@2: IMPORT_C ~CEikDocument(); williamr@2: public: // from MSaveObserver williamr@2: IMPORT_C virtual void SaveL(MSaveObserver::TSaveType aSaveType); williamr@2: public: // from CApaDocument williamr@2: IMPORT_C void NewDocumentL(); williamr@2: IMPORT_C CFileStore* CreateFileStoreLC(RFs& aFs,const TDesC& aFileName); williamr@2: IMPORT_C void EditL(MApaEmbeddedDocObserver* aObserver,TBool aReadOnly=EFalse); williamr@2: IMPORT_C void PrintL(const CStreamStore& aSourceStore); williamr@2: IMPORT_C void SaveL(); williamr@2: IMPORT_C void StoreL(CStreamStore& aStore,CStreamDictionary& aStreamDic) const; williamr@2: IMPORT_C void RestoreL(const CStreamStore& aStore,const CStreamDictionary& aStreamDic); williamr@2: IMPORT_C void ExternalizeL(RWriteStream& aStream) const; williamr@2: IMPORT_C TBool IsEmpty() const; williamr@2: IMPORT_C TBool HasChanged() const; williamr@2: IMPORT_C virtual void ValidatePasswordL() const; // return EFalse if there *is* a password *and* the user doesn't get it right, ETrue otherwise (ie they get it right or there isn't one). Returns ETrue by default williamr@2: protected: williamr@2: IMPORT_C CEikDocument(); williamr@2: IMPORT_C CEikDocument(CEikApplication& aApp); williamr@2: public: williamr@2: IMPORT_C virtual void OpenFileL(CFileStore*& aFileStore, RFile& aFile); williamr@2: private: williamr@2: void NullAppUi(); williamr@2: // reserved functions from CApaDocument williamr@2: IMPORT_C virtual void Reserved_2(); williamr@2: protected: williamr@2: /** A pointer to the app UI which the document is associated with. */ williamr@2: CEikAppUi* iAppUi; williamr@2: /** A pointer to the file store object which is used to edit the document. */ williamr@2: CStreamStore* iEditStore; williamr@2: private: williamr@2: TBool iChanged; williamr@2: TUint iAppFileMode; williamr@2: friend class CEikAppUi; williamr@2: }; williamr@2: williamr@2: /** A pointer to the application process associated with this document. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: #define iEikProcess ((CEikProcess*)Process()) williamr@2: williamr@2: /** A pointer to the application that created this document. williamr@2: williamr@2: @publishedAll williamr@2: @released */ williamr@2: #define iEikApplication ((CEikApplication*)Application()) williamr@2: williamr@2: /** Gets the file store object which is used to edit the document. williamr@2: williamr@2: @return A pointer to the file store object which is used to edit the document. */ williamr@2: inline CStreamStore* CEikDocument::EditStore() const williamr@2: { return(iEditStore); } williamr@2: williamr@2: #endif // __EIKDOC_H__ williamr@4: