--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/locationsystemui/locationsysui/locsuplsettingsui/inc/locsuplsettingsadapter.h Wed Nov 03 23:28:39 2010 +0530
@@ -0,0 +1,458 @@
+/*
+* Copyright (c) 2006 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: Adapter to the SUPL Settings API
+*
+*/
+
+
+#ifndef CLOCSUPLSETTINGSADAPTER_H_
+#define CLOCSUPLSETTINGSADAPTER_H_
+
+// System Includes
+#include <e32base.h>
+#include <epos_csuplsettingparams.h> // class CServerParams
+#include <epos_csuplsettings.h> // class CSuplSettings
+#include <epos_msuplsettingsobserver.h>
+
+// User Includes
+#include "epos_msuplsettingsobserver.h"
+#include "epos_msuplsessionobserver.h"
+
+// Forward Declarations
+class MLocSUPLSettingsAdapterObserver;
+class MLocSUPLSettingsSessionObserver;
+
+// Class Declaration
+
+/**
+ * Adapter class for the SUPL settings API. Handles all the interfacing
+ * functionality to the SUPL Settings API. It also observes for the Settings
+ * changes communicated through the MSuplSettingsObserver
+ */
+class CLocSUPLSettingsAdapter : public CActive,
+ public MSuplSettingsObserver,
+ public MSuplSessionObserver
+ {
+ public:
+ public:
+ /**
+ * Static Two phase contructor that instantiates the CLocSUPLSettingsAdapter
+ *
+ * @param aObserver Observer to the SUPL settings adapter
+ * @return CLocSUPLSettingsAdapter* Reference to the object created
+ */
+ static CLocSUPLSettingsAdapter* NewL(
+ MLocSUPLSettingsAdapterObserver& aObserver );
+
+ /**
+ * Destructor
+ */
+ virtual ~CLocSUPLSettingsAdapter();
+
+ private:
+ /**
+ * Private Constructor
+ */
+ CLocSUPLSettingsAdapter( MLocSUPLSettingsAdapterObserver& aObserver );
+
+ /**
+ * Second phase of the two phase constructor
+ */
+ void ConstructL();
+
+ public:
+ /**
+ * Initializes the SUPL Settings API. This is an asynchronus call, the call
+ * back for which is given through the observer
+ */
+ void Initialize();
+
+ /**
+ * Cancels the Initialization
+ */
+ void CancelInitialize();
+
+
+
+ /***************************************************************************
+ *
+ * @since S60 9.1TB
+ *
+ ***************************************************************************/
+
+ /**
+ * Adds the new server into settings.
+ * After adding server entry, the server identity generated will be retuned with aSlpId..
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aServerAddress Server address in string format
+ * @param [IN] aIapName The Internet Access Point Name refers to the access point which is
+ * used to access the HSLP over the internet. This can have maximum size of 100 characters.
+ * @param [IN] aUsageInHomeNw Inidcates whether server can be used in the home network or not
+ */
+ void AddNewServerL(
+ const TDesC& aServerAddress,
+ const TDesC& aIapName,
+ const TBool aUsageInHomeNw
+ );
+
+ /**
+ * Deletes server entry from SUPL settings storage.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId Server identity for which the entery needs to be deleted from the SUPL settings storage
+ *
+ */
+ void RemoveServerL(
+ const TInt64 aSlpId
+ );
+
+ /**
+ * This synchronous method is used to retrieve properties of all servers from SUPL settings storage.
+ * This method retrieves all properties for each server.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [OUT] aParamValues Array of retrieved server entries
+ * @ref CServerParams class
+ *
+ */
+ void GetAllSlpL(
+ RPointerArray<CServerParams>& aParamValues
+ ) const;
+
+ /**
+ * This method is used to retrieve all properties of server from SUPL settings storage
+ * based on SLP identification.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID for which the parameters needs to be changed
+ * @param [OUT] aParamValues Parameter for which the value needs to be changed
+ * @ref CServerParams class
+ */
+ void GetSlpInfoFromIdL(
+ const TInt64 aSlpId,
+ CServerParams *aParamValues
+ ) const;
+
+ /**
+ * Sets the priority of the server to the specified priority.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId Server identity for which the priority needs to be changed
+ * @param [IN] aPriority Number of positions to move
+ * @param [IN] aDirection Whether to increase or decrease priority.
+ *
+ */
+ void ChangePriorityL(
+ TInt64 aSlpId,
+ TInt aPriority,
+ TBool aDirection
+ );
+
+ /**
+ * Sets the server address parameter in server settings
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID for which the parameter needs to be changed
+ * @param [IN] aServerAddres SUPL Server address
+ *
+ */
+ void SetServerAddressL(
+ const TInt64 aSlpId,
+ const TDesC& aServerAddress
+ );
+
+ /**
+ * Obtains the server address parameter from server settings. Client
+ * has to allocate memory for server address parameter.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID of server for which the server address needs to be retrieved
+ * @param [OUT] aServerAddres SUPL Server address
+ *
+ */
+ void GetServerAddressL(
+ TInt64 aSlpId,
+ TDes& aServerAddress
+ ) const;
+
+ /**
+ * Sets the IAP Name in server parameters. IAP name refers to
+ * the access point which is used to access the HSLP over the internet.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID for which the parameter needs to be changed
+ * @param [IN] aIapName The Internet Access Point Name refers to the access point which is
+ * used to access the HSLP over the internet. This can have maximum size of 100 characters.
+ *
+ */
+ void SetIapNameL(
+ const TInt64 aSlpId,
+ const TDesC& aIapName
+ );
+
+ /**
+ * Obtains the IAP Name in server parameters. IAP name refers to
+ * the access point which is used to access the HSLP over the internet. It is client's
+ * responsibility to allocate memory for IAP name before invoking this method.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved
+ * @param [OUT] aIapName The Internet Access Point Name refers to the access point which is
+ * used to access the HSLP over the internet. This can have maximum size of 100 characters.
+ *
+ */
+ void GetIapNameL(
+ const TInt64 aSlpId,
+ TDes& aIapName
+ ) const;
+
+
+ /**
+ * Sets the parameter which indicates whether server
+ * can be used for SUPL session or not.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID for which the parameter needs to be changed
+ * @param [IN] aEnable Flag to indicate whether server can be enabled or not
+ *
+ */
+ void SetServerEnabledFlagL(
+ const TInt64 aSlpId,
+ const TBool aEnable
+ );
+
+ /**
+ * Obtains the parameter which indicates whether server
+ * can be used for SUPL session or not.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved
+ * @param [OUT] aEnable Flag to indicate whether server can be enabled or not
+ *
+ */
+ void GetServerEnabledFlagL(
+ const TInt64 aSlpId,
+ TBool& aEnable
+ ) const;
+
+ /**
+ * Sets the parameter which indicates whether server
+ * can be used out side home network or not.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID for which the parameter needs to be changed
+ * @param [IN] aHomeNwFlag Flag to indicate whether server can be used outside home network or not
+ *
+ */
+ void SetUsageInHomwNwFlagL(
+ const TInt64 aSlpId,
+ const TBool aHomeNwFlag
+ );
+
+ /**
+ * Obtains the parameter which indicates whether server
+ * can be used out side home network or not.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved
+ * @param [OUT] aHomeNwFlag Flag to indicate whether server can be used outside home network or not
+ *
+ */
+ void GetUsageInHomwNwFlagL(
+ const TInt64 aSlpId,
+ TBool& aHomeNwFlag
+ ) const;
+
+ /**
+ * This method is used to change parameter which indicates whether server
+ * details are editable or not.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved
+ * @param [IN] aEditFlag Flag to indicate whether server details are editable or not
+ */
+ void SetEditableFlagL(
+ const TInt64 aSlpId,
+ const TBool aEditFlag
+ ) const;
+
+ /**
+ * This method is used to retrieve parameter which indicates whether server
+ * details are editable or not.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSlpId SLP ID for which the parameter needs to be retrieved
+ * @param [OUT] aEditFlag Flag to indicate whether server details are editable or not
+ */
+ void GetEditableFlagL(
+ const TInt64 aSlpId,
+ TBool& aEditFlag
+ ) const;
+
+ /**
+ * Obtains the number of server entries present in SUPL settings.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [OUT] aCount Number of SLP entries
+ *
+ */
+ void SlpCountL(
+ TInt& aCount
+ );
+
+ /**
+ * Obtains the count of active SUPL sessions
+ *
+ * @since S60 9.1TB
+ *
+ * @param [OUT] aActiveSessionsCount Count of active SUPL sessions
+ *
+ */
+ void GetActiveSessionsCountL( TInt& aActiveSessionsCount );
+
+ /**
+ * This method is used to retrieve properties of all triggers from SUPL settings storage.
+ * This method retrieves all properties for each trigger.
+ *
+ * @since S60 9.1TB
+ *
+ * @param [OUT] aParamValues Array of retrieved trigger entries
+ * @ref CTriggerParams class
+ *
+ */
+ void GetTriggerParamsL( RPointerArray<CTriggerParams>& aParamValues ) const;
+
+ /**
+ * This method is used to retrieve properties of all triggers from SUPL settings storage.
+ * This method retrieves all properties for required trigger.
+ *
+ * @since S60 9.2TB
+ *
+ * @param [IN] aSessionId Sessiond Id
+ * @param [OUT] aTrigger Array of retrieved trigger entries
+ * @ref CTriggerParams class
+ *
+ */
+ void GetTriggerParamsL( TInt64 aSessionId, CTriggerParams*& aTrigger ) const;
+
+ /**
+ * Changes the notification status for a trigger session based on session id
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSessionId Id of session for which the notification status has to be changed
+ *
+ */
+ void ChangeNotificationStatusL( TInt64 aSessionId, TBool aTriggerNotificationStatus ) const;
+
+ /**
+ * Deletes a trigger session based on session id
+ *
+ * @since S60 9.1TB
+ *
+ * @param [IN] aSessionId Id of session that needs to be deleted
+ *
+ */
+ void RemoveTriggerSessionL( TInt64 aSessionId ) const;
+
+ /**
+ * Set the Observer for the specific Session
+ *
+ */
+ void SetSessionObserver( MLocSUPLSettingsSessionObserver* aObserver );
+
+ /**
+ * Remove the Session observer
+ *
+ */
+ void RemoveSessionObserver( );
+
+ /**
+ * Generates IMSI address
+ */
+ void GenerateHslpAddressFromImsi(TDes& aIMSIAddress );
+
+
+
+ public:
+
+ /**
+ * Inherited from MSuplSettingsObserver
+ */
+ void HandleSuplSettingsChangeL(
+ TSuplSettingsEventType aEvent,
+ TInt aSlpId
+ );
+
+
+ /**
+ * Inherited from MSuplSessionObserver
+ */
+ void HandleSuplSessionChangeL(
+ TSuplSessionEventType aEvent,
+ TInt64 aSessionId
+ );
+ protected:
+ /**
+ * Inherited from CActive
+ */
+ void RunL();
+
+ /**
+ * Inherited from CActive
+ */
+ void DoCancel();
+
+ private:
+ /**
+ * Observer for the SUPL Settings UI Adapter
+ * Reference
+ */
+ MLocSUPLSettingsAdapterObserver& iObserver;
+
+ /**
+ * SUPL Settings UI
+ * Owns
+ */
+ CSuplSettings* iSUPLSettings;
+
+
+ /**
+ * Observer for the specific SUPL session.
+ * Does not own.
+ */
+ MLocSUPLSettingsSessionObserver* iSessionObserver;
+
+ };
+
+#endif // CLOCSUPLSETTINGSADAPTER_H_
+
+// End of File