diff -r 000000000000 -r 667063e416a2 locationsystemui/locationsysui/locsettingsuiservice/locsettingsuiserver/inc/locsettingsuilaunchao.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/locationsystemui/locationsysui/locsettingsuiservice/locsettingsuiserver/inc/locsettingsuilaunchao.h Tue Feb 02 01:06:48 2010 +0200 @@ -0,0 +1,228 @@ +/* +* Copyright (c) 2005 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 declaration for Settings Launch AO class of Location +* Settings UI Server +* +*/ + + +#ifndef C_LOCSETTINGSUILAUNCHAO_H +#define C_LOCSETTINGSUILAUNCHAO_H + +#include +#include //For TSglQue + +#include "locsettingsuiinfo.h" +#include "locationui.h" + +//Forward Declaration +class CLocSysUiEngine; +class CEikonEnv; +class CActiveSchedulerWait; +/** + * The Settings UI Launch class. + * + * This class interacts with the LocationSysUi engine interface + * to execute the requested settings UI. + * It maintains a queue of all the requests and schedules them + * to execute in a serialized manner. + * + * @lib + * @since S60 v3.1 + */ +class CLocSettingsUISrvLaunchAO : public CActive, + public MLocationUIObserver + { +public: + /** + * Symbian 2 Phase Constructor + * + * @since S60 v3.1 + * @return A pointer to the created CLocSettingsUISrvLaunchAO object + */ + static CLocSettingsUISrvLaunchAO* NewL(); + + /** + * Symbian 2 Phase Constructor + * + * @since S60 v3.1 + * @return A pointer to the created CLocSettingsUISrvLaunchAO object + */ + static CLocSettingsUISrvLaunchAO* NewLC(); + + /** + * Destructor + */ + virtual ~CLocSettingsUISrvLaunchAO(); + +public: + /** + * Enqueue the Settings UI launch request. + * + * @since S60 v3.1 + * @param aReqInfo Pointer to the Settings UI Request Info class which + * contains all the information needed to launch the settings UI. + * @return None + */ + void EnqueueRequest( CLocSettingsUIInfo* aReqInfo ); + + /** + * Cancel the launched Settings UI. + * Checks if the UI to be cancelled is in the queue. If so the item + * is removed from the queue. Otherwise if the setitngs UI is currently + * running then it is cancelled and then removed. + * + * @since S60 v3.1 + * @param aSession The pointer to the session from which the settings UI + * launch was requested. + * @return None + */ + void CancelRequest( const CSession2* aSession ); + + /** + * Returns whether the server is running in embedded application server + * mode or not. + * + * @since S60 v3.1 + * @return ETrue if running in embedded application server mode. EFalse + * otherwise. + */ + TBool IsSrvRunningAsEmbeddedApp() const; + + /** + * From Base class MLocationUIObserver + * Notifies the termination of the Settings UI + * + * @param aErrorCode The termination reason. KErrNone for normal + * terminations. In case of error or pre-mature + * aborting System wide Error codes. + */ + virtual void LocationUIDismissed( TInt aErrorCode ); + +protected: // Functions from base classes + /** + * From Base class CActive + * Handles asynchronous request completion. + */ + virtual void RunL(); + + /** + * From Base class CActive + * Cancels any outstanding request. + */ + virtual void DoCancel(); + + /** + * From Base class CActive + * Handles a leave in RunL. + * + * @param aError The RunL leave code. + * @return Always KErrNone, because all errors are handled + */ + virtual TInt RunError(TInt aError); + +private: + /** + * Constructor + */ + CLocSettingsUISrvLaunchAO(); + + /** + * Symbian 2nd Phase Constructor + * Leaves in case of Error. + * + * @since S60 v3.1 + * @return None + */ + void ConstructL(); + +private: // Helper methods + /** + * Complete the specified request. + * Deques the request from the queue and also updates the request count. + * + * @since S60 v3.1 + * @param aReq pointer to the request to be completed and dequeued. + * @param aErrorCode the error code to be returned to the client that + * originated the request. + * @return None + */ + void CompleteRequest( CLocSettingsUIInfo* aReq, TInt aErrorCode ); + + /** + * Sends the Applicaiton Server UI to Background and hides it from + * the FSW as well. + * + * @since S60 v3.1 + * @return None + */ + void SendAppToBackground(); + + /** + * Brings the Application Server UI to Foreground and enables it in + * the FSW as well. + * + * @since S60 v3.1 + * @return None + */ + void BringAppToForeground(); + + /** + * Since this Active Object is a dummy object we have to reschedule + * it to run when ever needed. This method does that functionality. + * mode or not. + * + * @since S60 v3.1 + * @return None + */ + void ScheduleAORun(); + +private: // data + + /** + * This data member maintains a list of all the Launch Requests. + */ + TSglQue iRequestQue; + + /** + * The Engine Interface for launching Settings UI. + * Does not own. Just for reference. + * Will be created in this class and then ownership will be transferred + * to the Document class. + */ + CLocSysUiEngine* iEngine; + + /** + * Reference to the Eikon Environment. + * It is accessed multiple times. Hence Stored here to prevent + * unnecessary access each time to the TLS. + */ + CEikonEnv* iEikEnv; + + /** + * Determines whether this server is running as an embedded application + * server. + */ + TBool iIsSrvRunningAsEmbeddedApp; + + /** + * Reference to the Location UI that is currently outstanding. + * At any instant of time there can be only one request outstanding. + * Incase, there are no requests outstanding then the value is set to + * NULL. + */ + MLocationUI* iLocationUI; + }; + +#endif // C_LOCSETTINGSUILAUNCHAO_H