diff -r 000000000000 -r 522cd55cc3d7 locationcentre/lcutils/inc/lcapplauncher.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationcentre/lcutils/inc/lcapplauncher.h Tue Feb 02 00:16:03 2010 +0200 @@ -0,0 +1,320 @@ +/* +* Copyright (c) 2007 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: Utility class which provides the Application, Service and File +* launching services to Location Centre. +* +*/ + + +#ifndef LCAPPLAUNCHER_H +#define LCAPPLAUNCHER_H + +// SYSTEM INCLUDES +#include +#include + +// USER INCLUDES + +// FORWARD DECLARATIONS +class CEikonEnv; +class MLcAppExitObserver; +class CSchemeHandler; +class CDocumentHandler; + +/** + * Lc Launch Application Service class. This class provides the return path + * for the Application termination call issued from an application launched + * in the chanied mode + */ +class RLcLaunchAppService : public RAknAppServiceBase + { +public: // Inherited from Base classes + + /** + * Imherited from RAknAppServiceBase + */ + TUid ServiceUid() const; + }; + +/** + * Chained Application launcher for Location Centre. This class almost acts + * like a duplication for CAknLaunchAppService class. This is required because + * CAknLaunchAppService doesnt take any command line arguments. + */ +class CLcLaunchAppService : public CBase + { +public: + /** + * Static two phases constructor + */ + static CLcLaunchAppService* NewL(); + + /** + * C++ Destructor + */ + ~CLcLaunchAppService(); + + /** + * Launches an Application in the chained mode. + * + * @since S60 v5.0 + * @param aApplicationUid UID of the application that needs to be + * launched. + * @param aExitObserver Application Exit Observer + * @param aCmdLineArg Command line arguments which needs to be passed + * when the application is launched. + */ + void LaunchAppL( const TUid& aAppUid, + MAknServerAppExitObserver& aObserver, + const TDesC& aExitObserver ); + + +private: + /** + * Generates a Server name. This function has been duplicated + * from CAknLaunchAppService + * + * @since S60 v5.0 + * @param[out] aServerName Application Server name + * @param[in] aAppServerUid Application server UID + * @param[in] aServerDifferentiator Server differentiator + */ + void ServerName( TName& aServerName, TUid aAppServerUid, TUint aServerDifferentiator ); + + /** + * Generates a Server name and a differentiator. This function has been duplicated + * from CAknLaunchAppService + * + * @since S60 v5.0 + * @param[in] aServerName Application Server name + * @param[in] aAppServerUid Application server UID + * return Server differentiator + */ + TUint GenerateServerDifferentiatorAndName( TName& aServerName, TUid aAppServerUid ); + +private: // Data members + /** + * App Server exit monitor + * Owns + */ + CApaServerAppExitMonitor* iMonitor; + + /** + * Service class for establishing communication with the Application server + */ + RLcLaunchAppService iService; + }; + +/** + * Utility class which provides Application, Content and Services + * launch functionality to Location Centre. + * + * @lib lcutils.lib + * @since S60 v5.0 + */ +class CLcAppLauncher : public CBase, + public MAknServerAppExitObserver + { +public: + /** + * Constructs a new instance of Location Centre Application launcher. + * + * @return The new instance of Location Centre Application launcher object. + * @leave System wide error code if the object creation fails. + */ + IMPORT_C static CLcAppLauncher* NewL(); + + /** + * Constructs a new instance of Location Centre Application launcher. + * Leaves the created instance on the cleanup stack. + * + * @return The new instance of Location Centre Application launcher object. + * @leave System wide error code if the object creation fails. + */ + IMPORT_C static CLcAppLauncher* NewLC(); + + /** + * C++ Destructor. + * Frees all the resources associated with this Location Centre + * interface. + */ + virtual ~CLcAppLauncher(); + + /** + * Launchers an S60 Application or a Content/Service. + * + * This function acts a generic interface which the Location Centre + * Utility class provides to the Location Centre Client Library. Using + * this class Location Centre Client library can request the launch + * of an S60 Application, a Java based Application, Location based + * Content / Service. + * + * @since v5.0 + * @param aAppType Application Type + * @param aIdentifier Application Identifier + * @param aStandAlone Boolen value indicating whether the Application + * is Launched in the Stand-alone mode or in the + * Chained mode. + * @param aCmdLineArg Command line arguments which needs to be passed + * when the application is launched. + * @param aExitObserver The observer to notify the termination of the + * Launched application. + */ + IMPORT_C void LaunchLocationApplicationL( + TInt aAppType, + const TDesC& aIdentifer, + TBool aStandAlone, + const TDesC& aCmdLineArg, + MLcAppExitObserver* aExitObserver ); + +private: + /** + * Launches an S60 Application as a stand-alone application. + * + * This function launches an S60 application using the S60 Application + * architecture. Each S60 application is identified by a Unique + * identifier ( the UID of the application ). This function launches the + * application corresponding to the UID passed to it as a standalone + * application. + * + * @since S60 v5.0 + * @param aApplicationUid UID of the application that needs to be + * launched. + * @param aCmdLineArg Command line arguments which needs to be passed + * when the application is launched. + */ + void LaunchAppL( TUid aApplicationUid, + const TDesC& aCmdLineArg ); + + + /** + * Launches an S60 Application as a chained application. + * + * This function launches an S60 application using the S60 Application + * architecture. Each S60 application is identified by a Unique + * identifier ( the UID of the application ). This function launches the + * application corresponding to the UID passed to it as a chained + * application. In addition to that the caller function can also register + * an observer to notify the termination of the launched application. + * + * @since S60 v5.0 + * @param aApplicationUid UID of the application that needs to be + * launched. + * @param aCmdLineArg Command line arguments which needs to be passed + * when the application is launched. + * @param aExitObserver Application Exit Observer + */ + void LaunchAppAsChainedL( TUid aApplicationUid, + const TDesC& aCmdLineArg, + MLcAppExitObserver* aExitObserver ); + + /** + * Launches a Web URL using the S60 Web browser. + * + * This function launched a Web URL as specified by the argument in + * the S60 Web browser. This function invokes the existing instance + * of the browser with the URL if the browser is already running. In case + * the browser is not running, it launches the browser in the stand alone + * mode with the specified URL. Incase, the Chained mode is requested, then + * the browser is launched in the Embedded mode. + * + * @since S60 v5.0 + * @param aUrl The URL which needs to be launched in the browser. + * @param aStandAlone Boolen value indicating whether the Application + * is Launched in the Stand-alone mode or in the + * Chained mode. + * @param aObserver Observer to notify the termination of the + * Web browser. + */ + void LaunchWebBroserL( const TDesC& aUrl, + TBool aStandAlone, + MLcAppExitObserver* aObserver ); + + /** + * Launches content present in a file using an appropriate Application. + * + * This function launches the content using an appropriate S60 application. It + * uses the S60 Document handler to load the corresponding application + * with the specified file name. + * + * @since S60 v5.0 + * @param aFileName The name with full path of the file containing the content. + * @param aStandAlone Boolen value indicating whether the Application + * is Launched in the Stand-alone mode or in the + * Chained mode. + * @param aObserver The observer to notify the termination of the launched + * application. + */ + void LaunchContentL( const TDesC& aFileName, + TBool aStandAlone, + MLcAppExitObserver* aObserver ); + +public: // Inherited from Base classes + /** + * Inherited from MAknServerAppExitObserver + * Notifies the termination of the Chained Application. + * + * @param aReason Reason for the application termination. + */ + void HandleServerAppExit( TInt aReason ); + +private: + /** + * Default C++ Constructor. + */ + CLcAppLauncher(); + + /** + * Second phase of the two phase constructor. + */ + void ConstructL(); + +private: + /** + * Pointer to the Eikon Environment. + */ + CEikonEnv* iEnv; + + /** + * Observer to notify the termination of the Location Application. + */ + MLcAppExitObserver* iExitObserver; + + /** + * Launcher class used to launch the S60 browser as a chained + * application. + * Owns. + */ + CSchemeHandler* iBrowserLauncher; + + /** + * Document handler used for launching documents. + * Owns + */ + CDocumentHandler* iDocHandler; + + /** + * Application Service class. This class is used to launch an application + * as an embedded application + */ + CLcLaunchAppService* iAppService; + + /** + * Flag to check whether an Embedded launch is outstanding + */ + TBool isEmbeddedLaunchOutstanding; + + }; + +#endif // LCAPPLAUNCHER_H