diff -r e1b950c65cb4 -r 837f303aceeb epoc32/include/mw/apaapp.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/epoc32/include/mw/apaapp.h Wed Mar 31 12:33:34 2010 +0100 @@ -0,0 +1,183 @@ +// Copyright (c) 1997-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: +// The main startup of the AppArc server +// +// apaapp.h +// + +#ifndef __APAAPP_H__ +#define __APAAPP_H__ + +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +#if !defined(__APAID_PARTNER_H__) +#include "apaidpartner.h" +#endif +#endif //SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#include +#include +#include + +class CApaApplication; +class CApaDocument; +class CApaProcess; +class CDictionaryStore; +class CImplementationInformation; +class CApaAppServer; + + +/** Defines the basic behaviour for applications. + +The class defines the basic twin roles of an application class as a factory +that creates concrete document objects, and as a supplier of utility functions +not specific to any particular instance of a document. For example, returning +an application's caption, or accessing its .ini file. + +The class is derived from by the UI framework and is further derived from +by the UI application. + +@publishedAll +@released +@see CEikApplication */ +class CApaApplication : public CBase +// base class for applications; allows creation of documents & file stores + display of app icon and name. + { +public: + /** Completes construction of this application object. + + The function is called after an instance of a derived class has been successfully + created using the ordinal 1 function of the application DLL. + + After calling this function, an application can create document objects. + + An implementation of this function is supplied by the UI framework. + + @see CEikApplication */ + virtual void PreDocConstructL() = 0; // call once before creating document + + /** Creates a document object. + + The function is called by the application process when a new document is required. + The application process adds the new document to its list of documents. + + An implementation of this function is supplied by the UI framework. + + @param aProcess A pointer to the process associated with the application. + @return A pointer to the newly created document. + @see CApaProcess::AddNewDocumentL() */ + virtual CApaDocument* CreateDocumentL(CApaProcess* aProcess) = 0; + + /** Gets the application specific UID. + + The UID is used to differentiate between UI applications. + + An implementation of this function must be supplied by the UI application. + + @return The application specific UID. */ + virtual TUid AppDllUid() const = 0; +public: // utility functions + IMPORT_C static TInt GenerateFileName(RFs& aFs, TFileName& aRootName); + IMPORT_C CDictionaryStore* OpenIniFileL(RFs& aFs) const; + + /** Opens the .ini file associated with the application, constructs the dictionary + store object, returns a pointer to it and puts the pointer onto the cleanupstack. + + The .ini file must be created, if it does not already exist. + + An implementation of this function is supplied by the UI framework. + + @param aFs Handle to a file server session + @return A pointer to the dictionary store object that represents the application's .ini file. + @see CEikApplication */ + virtual CDictionaryStore* OpenIniFileLC(RFs& aFs) const = 0; +public: // enquiry functions + IMPORT_C virtual TFileName AppFullName() const; // returns the full path and name of the app + /** Returns the capabilities of the application. + + Application capability information is represented by an instance of a TApaAppCapability + object wrapped in a packaged modifiable buffer descriptor. + + The function is called from a number of places within the application framework. + + An implementation of this function is supplied by the UI framework. + + @param aInfo A packaged modifiable buffer descriptor (a TPckgBuf), encapsulating + a TApaAppCapability object. + @see CEikApplication + @see TApaAppCapability + @see TPckgBuf */ + virtual void Capability(TDes8& aInfo) const = 0; +public: // accessor function + IMPORT_C TFileName DllName() const; + IMPORT_C ~CApaApplication(); + IMPORT_C virtual void NewAppServerL(CApaAppServer*& aAppServer); +protected: + IMPORT_C CApaApplication(); +public: // internal use only + void SetAppFileNameRef(const RBuf& aFileName); +private: + IMPORT_C virtual void CApaApplication_Reserved1(); + IMPORT_C virtual void CApaApplication_Reserved2(); +private: + const RBuf* iAppFileNameRef; // not owned + TUid iEComDtorKey; +// friend class CApaProcess; + friend class TApaApplicationFactory; // so that it can access iDtorKey +private: + TInt iCApaApplication_Reserved1; + }; + + +/** Encapsulates the functionality of creating an application, whether it be via a factory function +or an ECOM plugin. Instances of this class can usually be created implicitly when required as +function parameters - just specify the function pointer, ECOM plugin UID or CImplementationInformation +reference. + +@publishedAll +@released +@see CApaProcess +@see EikStart */ +class TApaApplicationFactory + { +public: + typedef CApaApplication* (*TFunction)(); +public: + IMPORT_C TApaApplicationFactory(); + IMPORT_C TApaApplicationFactory(TFunction aFunction); + IMPORT_C TApaApplicationFactory(const CImplementationInformation& aEmbeddedApplicationInformation); + IMPORT_C TApaApplicationFactory(TUid aEmbeddedApplicationUid); + CApaApplication* CreateApplicationL() const; + HBufC* AppFileNameL() const; + TUid AppFileUid() const; +private: + enum TType + { + ETypeFunction, // if iType is this, iData is a TFunction + ETypeEmbeddedApplicationInformation, // if iType is this, iData is an ECOM CImplementationInformation + ETypeEmbeddedApplicationUid // if iType is this, iData is an ECOM implementation TUid + }; +private: + static CApaApplication* CreateEmbeddedApplicationL(TUid aUid); + static HBufC* EmbeddedApplicationDisplayNameLC(TUid aUid); + static HBufC* FullAppFileNameL(const TDesC& aAppName); + static void CleanupImplementationArray(TAny* aImplementationArray); +private: + TType iType; + TUint iData; + mutable CApaApplication* iApplication; // used to be iSpare1 + TInt iSpare2; + }; + + +#endif // __APAAPP_H__