locationcentre/lcutils/inc/lcapplauncher.h
changeset 0 522cd55cc3d7
child 6 91123d004e8f
--- /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 <e32std.h>
+#include <aknserverapp.h>
+
+// 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