epoc32/include/apparc.h
author William Roberts <williamr@symbian.org>
Tue, 16 Mar 2010 16:12:26 +0000
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
permissions -rw-r--r--
Final list of Symbian^2 public API header files
     1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     4 // 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
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
     7 //
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
    10 //
    11 // Contributors:
    12 //
    13 // Description:
    14 //
    15 
    16 #ifndef __APPARC_H__
    17 #define __APPARC_H__
    18 
    19 #if !defined(__E32STD_H__)
    20 #include <e32std.h>
    21 #endif
    22 #if !defined(__E32BASE_H__)
    23 #include <e32base.h>
    24 #endif
    25 #if !defined(__F32FILE_H__)
    26 #include <f32file.h>
    27 #endif
    28 #if !defined(__GDI_H__)
    29 #include <gdi.h>
    30 #endif
    31 #if !defined(__APADEF_H__)
    32 #include <apadef.h>
    33 #endif
    34 #if !defined(__APAID_H__)
    35 #include <apaid.h>
    36 #endif
    37 
    38 // classes defined:
    39 class CApaApplication;
    40 class CApaDocument;
    41 class CApaProcess;
    42 class MApaEmbeddedDocObserver;
    43 //
    44 // classes referenced:
    45 class CApaDll;
    46 class CApaExe;
    47 class RFile;
    48 class RReadStream;
    49 class RWriteStream;
    50 class CFileStore;
    51 class CPersistentStore;
    52 class CStreamDictionary;
    53 class CDictionaryStore;
    54 class TApaAppHolderInfo;
    55 class CImplementationInformation;
    56 class TApaApplicationFactory;
    57 class CApaAppHolder;
    58 class CApaAppServer;
    59 
    60 /** Creates an application interface object.
    61 
    62 Provides the basic roles of an application class as a factory that
    63 creates concrete document objects, and supplies utility functions 
    64 not specific to any particular instance of a document.
    65 
    66 @publishedAll
    67 @released
    68 */
    69 typedef CApaApplication* (*CreateCApaApplication)();
    70 
    71 
    72 // CApaApplication
    73 
    74 class CApaApplication : public CBase
    75 // base class for applications; allows creation of documents & file stores + display of app icon and name.
    76 /** Defines the basic behaviour for applications.
    77 
    78 The class defines the basic twin roles of an application class as a factory 
    79 that creates concrete document objects, and as a supplier of utility functions 
    80 not specific to any particular instance of a document. For example, returning 
    81 an application's caption, or accessing its .ini file.
    82 
    83 The class is derived from by the UI framework and is further derived from 
    84 by the UI application.
    85 
    86 @publishedAll 
    87 @released 
    88 @see CEikApplication */
    89 	{
    90 public:
    91 	/** Completes construction of this application object.
    92 	
    93 	The function is called after an instance of a derived class has been successfully 
    94 	created using the ordinal 1 function of the application DLL.
    95 	
    96 	After calling this function, an application can create document objects.
    97 	
    98 	An implementation of this function is supplied by the UI framework.
    99 	
   100 	@see CEikApplication */
   101 	virtual void PreDocConstructL()=0; // call once before creating document
   102 	
   103 	/** Creates a document object.
   104 	
   105 	The function is called by the application process when a new document is required. 
   106 	The application process adds the new document to its list of documents.
   107 	
   108 	An implementation of this function is supplied by the UI framework.
   109 	
   110 	@param aProcess A pointer to the process associated with the application.
   111 	@return A pointer to the newly created document.
   112 	@see CApaProcess::AddNewDocumentL() */
   113 	virtual CApaDocument* CreateDocumentL(CApaProcess* aProcess)=0;
   114 	
   115 	/** Gets the application specific UID.
   116 	
   117 	The UID is used to differentiate between UI applications.
   118 	
   119 	An implementation of this function must be supplied by the UI application.
   120 	
   121 	@return The application specific UID. */
   122 	virtual TUid AppDllUid()const=0;
   123 	
   124 	//
   125 	// utility functions
   126 	IMPORT_C static TInt GenerateFileName(RFs& aFs,TFileName& aRootName);
   127 	IMPORT_C CDictionaryStore* OpenIniFileL(RFs& aFs)const;
   128 	
   129 	/** Opens the .ini file associated with the application, constructs the dictionary 
   130 	store object, returns a pointer to it and puts the pointer onto the cleanupstack.
   131 	
   132 	The .ini file must be created, if it does not already exist.
   133 	
   134 	An implementation of this function is supplied by the UI framework.
   135 	
   136 	@param aFs Handle to a file server session 
   137 	@return A pointer to the dictionary store object that represents the application's 
   138 	.ini file. 
   139 	@see CEikApplication */
   140 	virtual CDictionaryStore* OpenIniFileLC(RFs& aFs)const=0;
   141 	//
   142 	// enquiry functions
   143 	IMPORT_C virtual TFileName AppFullName()const; // returns the full path and name of the app
   144 	/** Returns the capabilities of the application.
   145 	
   146 	Application capability information is represented by an instance of a TApaAppCapability 
   147 	object wrapped in a packaged modifiable buffer descriptor.
   148 	
   149 	The function is called from a number of places within the application framework.
   150 	
   151 	An implementation of this function is supplied by the UI framework.
   152 	
   153 	@param aInfo A packaged modifiable buffer descriptor (a TPckgBuf), encapsulating 
   154 	a TApaAppCapability object. 
   155 	@see CEikApplication
   156 	@see TApaAppCapability
   157 	@see TPckgBuf */
   158 	virtual void Capability(TDes8& aInfo)const=0;
   159 	//
   160 	// accessor function
   161 	IMPORT_C TFileName DllName()const;
   162 	
   163 	IMPORT_C ~CApaApplication();
   164 
   165 	// formerly a reserved virtual, Reserved_1()
   166 	IMPORT_C virtual void NewAppServerL(CApaAppServer*& aAppServer);
   167 protected:
   168 	IMPORT_C CApaApplication();
   169 	
   170 	IMPORT_C virtual void CApaApplication_Reserved1();
   171 	IMPORT_C virtual void CApaApplication_Reserved2();
   172 
   173 private:
   174 	CApaAppHolder* iAppHolder;  // the CApaAppHolder that owns me
   175 	TUid iDtorKey;	//	TInt iSpare;
   176 	friend class CApaAppHolder;
   177 	friend class CApaProcess;
   178 	friend class TApaApplicationFactory; // so that it can access iDtorKey
   179 	
   180 private:
   181 	TInt iCApaApplication_Reserved1;
   182 	};
   183 
   184 class CApaDocument : public CBase
   185 // base class for documents; allows insertion of glass doors.
   186 /** Defines basic behaviour for documents.
   187 
   188 This is the base class for all documents. A document contains the data associated 
   189 with the application's content.
   190 
   191 The class is derived from by the UI framework and is further derived from 
   192 by the UI application.
   193 
   194 @publishedAll 
   195 @released
   196 @see CEikDocument */
   197 	{
   198 public:
   199 	class TCapability
   200 	/** CApaDocument capabilities.*/
   201 		{
   202 	public:
   203 		IMPORT_C TCapability();
   204 		//
   205 		inline TBool CanDrawGlass()const;
   206 		inline TBool CanPrint()const;
   207 		inline void SetCanDrawGlass();
   208 		inline void SetCanPrint();
   209 		//
   210 	private:
   211 		enum {
   212 			ECanDrawGlass	=0x01,
   213 			ECanPrint		=0x02
   214 			};
   215 	private:
   216 		TUint iCapability;
   217 		TInt TCapability_Reserved1;
   218 		};
   219 	//
   220 public:
   221 	// document instantiation functions
   222 	/** Initialises a new, empty, document with a default setup.
   223 	
   224 	This can be the main document or an embedded document. The function is called 
   225 	by the UI framework when it creates a default document file.
   226 	
   227 	An implementation of this function must be supplied by the UI application.
   228 	
   229 	If initialisation fails, the document must be left in the same state as it 
   230 	was before the function was called. */
   231 	virtual void NewDocumentL()=0; // builds a new embedded or main document without loading from a store (may create the content from eg code or a template file).
   232 	
   233 	/** Creates and fully initialises a new filestore and stores the document into it, 
   234 	replacing any existing file of the same name.
   235 	
   236 	The function should put the pointer to the filestore object onto the cleanup 
   237 	stack.
   238 	
   239 	An implementation of this function is supplied by the UI framework.
   240 	
   241 	@param aFs Handle to a file server session. 
   242 	@param aFileName The full path name of the file to be created. 
   243 	@return A pointer to the newly constructed file store. 
   244 	@see CEikDocument */
   245 	virtual CFileStore* CreateFileStoreLC(RFs& aFs,const TDesC& aFileName)=0; // creates a file for a document and stores itself to that store (store should be put on cleanup stack).
   246 	//
   247 	// interaction functions
   248 	IMPORT_C virtual CPicture* GlassPictureL(); // Does nothing by default, override to return handle to glass picture.
   249 	
   250 	/** Starts an editing session on an embedded document.
   251 	
   252 	The function should cause the application's UI to be created and the document 
   253 	to be fully restored for editing.
   254 	
   255 	An implementation of this function is supplied by the UI framework.
   256 	
   257 	@param aContainer This document's observer.
   258 	@param aReadOnly True, the document should be opened in read-only mode and 
   259 	should not persist any changes made to the content. False, the document can 
   260 	be opened in read/write mode; this is the default. 
   261 	@see CEikDocument */
   262 	virtual void EditL(MApaEmbeddedDocObserver* aContainer,TBool aReadOnly=EFalse)=0; // Edit the document in the context of the container's environment. If aContainer is null, edit as the main document
   263 	
   264 	/** Prints the document without a need for it to be open for editing.
   265 	
   266 	Typically, this is called from a shell or a file manager type application 
   267 	that wants to print the document without opening it fully.
   268 	
   269 	An empty implementation of this function is supplied by the UI framework.
   270 	
   271 	The UI application can provide its own implementation.
   272 	
   273 	@param aSourceStore A reference to the store containing the document. 
   274 	@see CEikDocument */
   275 	virtual void PrintL(const CStreamStore& aSourceStore)=0; // default print parameters, assume print context supplied by environment
   276 	//
   277 	// persistence functions
   278 
   279 	/** Stores the document to the current file, commits the changes, and marks the 
   280 	document status as unchanged.
   281 	
   282 	Typically, the function is called by the application when it implements a 
   283 	"Save" type menu option in its User Interface.
   284 	
   285 	An implementation of this function is supplied by the UI framework. This is 
   286 	adequate for direct file store applications. Applications using a permanent 
   287 	file store model, need to provide their own implementation.
   288 	
   289 	If the function leaves, an implementation should ensure that any changes made 
   290 	to the file are rolled back, leaving the file in the state it was in before 
   291 	the function was called.
   292 	
   293 	@see CEikDocument */
   294 	virtual void SaveL()=0; // save the doc to the file in the custody of iAppProcess. This fn should be called by any "Save" menu option. store->Commit() should be called within it.	
   295 	/** Stores the document's content and state to the specified store, recording the 
   296 	identity of any headstreams created in the specified stream dictionary.
   297 	
   298 	The store must be fully constructed before this function is called.
   299 	
   300 	An empty implementation of this function is supplied by the UI framework. 
   301 	UI applications that need to persist any data must provide their own implementation.
   302 	
   303 	If the function leaves, an implementation should ensure that the store and 
   304 	the stream dictionary are returned to the state they were in before the function 
   305 	was called.
   306 	
   307 	@param aStore The store into which document data is to be stored. 
   308 	@param aStreamDic The stream dictionary into which stream IDs and associated 
   309 	UIDs are to be recorded. 
   310 	@see CEikDocument */
   311 	virtual void StoreL(CStreamStore& aStore,CStreamDictionary& aStreamDic) const=0; // store to aStore, lodging the headstream in aStreamDic
   312 	
   313 	/** Restores the document's content and state from data persisted in the specified 
   314 	store.
   315 	
   316 	An empty implementation of this function is supplied by the UI framework. 
   317 	UI applications that need to restore data must provide their own implementation.
   318 	
   319 	If the function leaves, an implementation should ensure that the store and 
   320 	the stream dictionary are returned to the state they were in before the function 
   321 	was called.
   322 	
   323 	@param aStore The store from which document data is to be restored. 
   324 	@param aStreamDic The stream dictionary containing stream IDs and associated 
   325 	UIDs. 
   326 	@see CEikDocument */
   327 	virtual void RestoreL(const CStreamStore& aStore,const CStreamDictionary& aStreamDic)=0; // restore from aStore using aStreamDic
   328 	
   329 	/** Restores the document to the extent that it does not need the store
   330 	further.
   331 
   332 	A document only keeps a pointer to a store if it implements deferred
   333 	loading. This also tells the document that any store pointer that it
   334 	might have is just about to become invalid.
   335 	
   336 	An empty implementation of this function is supplied by the UI framework. 
   337 	UI applications that support deferred loading or embedding should provide an
   338 	implementation.
   339 	
   340 	If a document supports embedding, then it should
   341 	propagate the DetachFromStoreL() call on to all embedded objects that
   342 	it contains.
   343 	
   344 	If the function leaves, the operation should be aborted
   345 	because the document has not successfully detached from the store.
   346 	Continuing with the operation may leave the document in an unsafe
   347 	state or cause user data to be lost.
   348 
   349 	@param aDegree The degree of detachment required. */
   350 	virtual void DetachFromStoreL(CPicture::TDetach /*aDegree*/=CPicture::EDetachFull) {} // supply an implementation if you support deferred loading or embedding
   351 
   352 	IMPORT_C virtual void ExternalizeL(RWriteStream& aStream)const;
   353 	//
   354 	// enquiry functions
   355 	
   356 	/** Tests whether the document is empty.
   357 	
   358 	The UI framework provides a default implementation which always returns a 
   359 	true value.
   360 	
   361 	The UI application can provide its own implementation. Typically, any application 
   362 	that has editable content should supply an implementation that acts according 
   363 	to the state of that content. Applications without associated document data 
   364 	need not supply an implementation.
   365 	
   366 	@return True if the document is empty, false otherwise. 
   367 	@see CEikDocument */
   368 	virtual TBool IsEmpty()const=0; // return ETrue if the document is empty
   369 	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
   370 	
   371 	IMPORT_C virtual TCapability Capability()const; // returns "cant do anything" by default
   372 	inline CApaApplication* Application()const;
   373 	inline CApaProcess* Process()const;
   374 	
   375 	/** Tests whether the document has changed since it was last persisted.
   376 	
   377 	An implementation of this function is supplied by the UI framework and need 
   378 	not be changed by the UI application.
   379 	
   380 	@return True, if the document has changed since the last time that it was 
   381 	persisted, false, otherwise.
   382 	@see CEikDocument */
   383 	virtual TBool HasChanged()const =0;
   384 	//
   385 	IMPORT_C virtual ~CApaDocument();
   386 protected:
   387 	IMPORT_C CApaDocument();
   388 	IMPORT_C CApaDocument(CApaApplication& aApp,CApaProcess& aProcess);
   389 private:
   390 	IMPORT_C virtual void OpenFileL(CFileStore*& aFileStore, RFile& aFile); // was previously Reserved_1
   391 	// Reserved virtual functions...
   392 	IMPORT_C virtual void Reserved_2();
   393 protected:
   394 	MApaEmbeddedDocObserver* iContainer; // null unless this is an embedded object currently being edited
   395 private:
   396 	CApaApplication* iApplication; // the doc's associated application
   397 	CApaProcess* iApaProcess;
   398 	TInt iSpare;
   399 	};
   400 
   401 
   402 
   403 class TApaApplicationFactory
   404 /** Encapsulates the functionality of creating an application, whether it be via a factory function
   405 or an ECOM plugin. Instances of this class can usually be created implicitly when required as
   406 function parameters - just specify the function pointer, ECOM plugin UID or CImplementationInformation
   407 reference.
   408 
   409 @publishedAll
   410 @released
   411 @see CApaProcess
   412 @see EikStart */
   413 	{
   414 public:
   415 	typedef CApaApplication* (*TFunction)();
   416 public:
   417 	IMPORT_C TApaApplicationFactory();
   418 	IMPORT_C TApaApplicationFactory(TFunction aFunction);
   419 	IMPORT_C TApaApplicationFactory(const CImplementationInformation& aEmbeddedApplicationInformation);
   420 	IMPORT_C TApaApplicationFactory(TUid aEmbeddedApplicationUid);
   421 	CApaApplication* CreateApplicationL() const;
   422 	HBufC* AppFileNameL() const;
   423 	TUid AppFileUid() const;
   424 private:
   425 	enum TType
   426 		{
   427 		ETypeFunction,							// if iType is this, iData is a TFunction
   428 		ETypeEmbeddedApplicationInformation,	// if iType is this, iData is an ECOM CImplementationInformation
   429 		ETypeEmbeddedApplicationUid				// if iType is this, iData is an ECOM implementation TUid
   430 		};
   431 private:
   432 	static CApaApplication* CreateEmbeddedApplicationL(TUid aUid);
   433 	static HBufC* EmbeddedApplicationDisplayNameLC(TUid aUid);
   434 	static HBufC* FullAppFileNameL(const TDesC& aAppName);
   435 	static void CleanupImplementationArray(TAny* aImplementationArray);
   436 private:
   437 	TType iType;
   438 	TUint iData;
   439 	mutable CApaApplication* iApplication; // used to be iSpare1
   440 	TInt iSpare2;
   441 	};
   442 
   443 class CApaParentProcessMonitor;
   444 
   445 class CApaProcess : public CBase
   446 /** Maintains a list of documents and all of the potentially shared resources used 
   447 by documents.
   448 
   449 This includes the application DLLs. The class also supplies utility functions 
   450 that provide the basic structure for persisted document files.
   451 
   452 The class deals with the loading of application DLLs and manages the creation 
   453 and destruction of application (CApaApplication) objects and document (CApaDocument) 
   454 objects.
   455 
   456 The class is derived from by the UI framework and further derivation by the 
   457 UI application is not necessary unless it needs to add extra utility functions 
   458 for the use of applications.
   459 
   460 @publishedAll
   461 @released
   462 @see CApaApplication
   463 @see CApaDocument */
   464 	{
   465 public:
   466 	IMPORT_C static CApaProcess* NewL(const RFs& aFs);
   467 	IMPORT_C void ResetL();
   468 	//
   469 	// static utility functions
   470 	IMPORT_C static CStreamDictionary* ReadRootStreamLC(RFs& aFs,CFileStore*& aStore,const TDesC& aDocFullFileName,TUint aFileMode); // opens aDocFileName as aStore and returns the stream dictionary contained in its root stream on the cleanup stack
   471 	IMPORT_C static CStreamDictionary* ReadRootStreamLC(CFileStore*& aStore, const RFile& aFile);
   472 	IMPORT_C static void WriteRootStreamL(CPersistentStore& aStore,CStreamDictionary& aStreamDic,const CApaApplication& aApp);
   473 	IMPORT_C static void WriteRootStreamL(CPersistentStore& aStore,CStreamDictionary& aStreamDic,const TApaAppIdentifier& aAppId);
   474 	IMPORT_C static TApaAppIdentifier ReadAppIdentifierL(const CStreamStore& aStore,const CStreamDictionary& aStreamDic);
   475 	IMPORT_C static void WriteAppIdentifierL(CStreamStore& aStore,CStreamDictionary& aStreamDic,const TApaAppIdentifier& aAppId);
   476 	//
   477 	// document management
   478 	IMPORT_C CApaDocument* AddNewDocumentL(TApaApplicationFactory aApplicationFactory);
   479 	IMPORT_C CApaDocument* OpenNewDocumentL(CFileStore*& aStore,CStreamDictionary*& aStreamDic,const TDesC& aDocFullFileName,TUint aFileMode); // Open a file and restore the contained document
   480 	IMPORT_C void DestroyDocument(CApaDocument* aDoc); // Removes a doc (identified by the object) from the list and destroys it. Also removes the app and closes the AppDll if appropriate.
   481 	//
   482 	// setter functions
   483 	IMPORT_C void SetMainDocument(CApaDocument* aDocument);
   484 	IMPORT_C void SetMainDocFileName(const TDesC& aMainDocFileName); // panics if the descriptor is too long
   485 	IMPORT_C void SetMainDocFileNameL(const TDesC& aMainDocFileName);
   486 	//
   487 	// accessor functions
   488 	IMPORT_C TPtrC MainDocFileName()const;
   489 	inline RFs& FsSession()const;
   490 	inline CApaDocument* MainDocument()const;
   491 	//
   492 	IMPORT_C ~CApaProcess();
   493 protected:
   494 	IMPORT_C CApaProcess();
   495 	IMPORT_C CApaProcess(const RFs& aFs);
   496 	IMPORT_C void ConstructL();
   497 	IMPORT_C void ConstructL(TProcessId aParentProcessId);
   498 
   499 	IMPORT_C virtual void CApaProcess_Reserved1();
   500 	IMPORT_C virtual void CApaProcess_Reserved2();
   501 public:
   502 	static TInt IdleRemoveApplications(TAny* aThis);
   503 	void RemoveMarkedApplications();
   504 private:
   505 	CApaDll* AddAppDllL(const TDesC& aDllFullPath);
   506 	CApaExe* AddAppExeL(TApaApplicationFactory aApplicationFactory);
   507 	void RemoveApp(CApaAppHolder* aAppHolder);
   508 	CApaDocument* CreateDocL(CApaApplication* aApp);
   509 	CApaAppHolder* FindAppInListL(const TDesC& aAppFileName,TUid aUid)const; // returns NULL if not in list
   510 	void DeleteAllDocs();
   511 	void MarkApplicationForRemoval(const CApaApplication* aApp);
   512 	static void DoReadRootStreamL(CStreamDictionary& aStreamDictionary, const CFileStore& aStore);
   513 private:
   514 	CArrayFixFlat<TApaAppHolderInfo>* iAppList; // array of apps in use
   515 	CArrayFixFlat<CApaDocument*>* iDocList; // array of documents (1 main + n embedded)
   516 	CApaDocument* iMainDoc;
   517 	HBufC* iMainDocFileName;
   518 	RFs iFsSession; // file server session for doc store
   519 	CIdle* iApplicationRemover;
   520 	CApaParentProcessMonitor* iMonitor;
   521 	TInt iCApaProcess_Reserved1;
   522 	};
   523 
   524 
   525 class MApaEmbeddedDocObserver
   526 /** An interface class for handling the completion of the editing of an embedded 
   527 document.
   528 
   529 @publishedAll 
   530 @released
   531 @see CApaDocument::EditL() */
   532 	{
   533 public:
   534 	/** Defines the state of the embedded document on completion of editing. */
   535 	enum TExitMode {
   536 		/** Changes to the embedded document must be saved. */
   537 		EKeepChanges,
   538 		/** Reverts back to the saved version of the embedded document, i.e. reloads the 
   539 		whole document. */
   540 		ERevertToSaved,
   541 		/** No changes have been made to the embedded document. */
   542 		ENoChanges,
   543 		/** The embedded document is empty. */
   544 		EEmpty
   545 		};
   546 public:
   547 	/** Implements the required behaviour when the editing of an embedded document completes.
   548 	
   549 	@param aMode Indicates the state of the document. */
   550 	virtual void NotifyExit(TExitMode aMode)=0; // called on completion of editing of an embedded document
   551 protected:
   552 	IMPORT_C MApaEmbeddedDocObserver();
   553 private:
   554 	IMPORT_C virtual void MApaEmbeddedDocObserver_Reserved1();
   555 	IMPORT_C virtual void MApaEmbeddedDocObserver_Reserved2();
   556 private:
   557 	TInt iMApaEmbeddedDocObserver_Reserved1;
   558 	};
   559 
   560 
   561 //// inlines ////
   562 inline CApaApplication* CApaDocument::Application()const
   563 /** Returns a pointer to the application that created the document.
   564 
   565 @return A pointer to the document's associated application. */
   566 	{ return iApplication; }
   567 
   568 inline CApaProcess* CApaDocument::Process()const
   569 /** Returns a pointer to the application process associated with this document.
   570 
   571 @return A pointer to the application process associated with this document. */
   572 	{ return iApaProcess; }
   573 
   574 inline TBool CApaDocument::TCapability::CanDrawGlass()const
   575 /** Tests whether the document supports being embedded as a glass door.
   576 
   577 @return True if embedding as a glass door is supported; false otherwise. */
   578 	{ return iCapability&ECanDrawGlass; }
   579 
   580 inline TBool CApaDocument::TCapability::CanPrint()const
   581 /** Tests whether the document supports being printed without using the full application 
   582 UI.
   583 
   584 @return True, if printing is supported; false, otherwise. */
   585 	{ return iCapability&ECanPrint; }
   586 
   587 inline void CApaDocument::TCapability::SetCanDrawGlass()
   588 /** Sets the document as being capable of being embedded as a glass door. */
   589 	{ iCapability = iCapability|ECanDrawGlass; }
   590 
   591 inline void CApaDocument::TCapability::SetCanPrint()
   592 /** Sets the document as being capable of being printed without using the full application 
   593 UI. */
   594 	{ iCapability = iCapability|ECanPrint; }
   595 
   596 inline RFs& CApaProcess::FsSession()const
   597 /** Returns a handle to the file server session used by this application process.
   598 
   599 @return The file server session. */
   600 	{ return (RFs&)iFsSession; } //lint !e1536 Exposing low access member - Kept for backward BC
   601 
   602 inline CApaDocument* CApaProcess::MainDocument()const
   603 /** Returns a pointer to the main document.
   604 
   605 @return A pointer to the main document. */
   606 	{ return iMainDoc; }
   607 	
   608 #endif