diff -r 1fc85118c3ae -r 870918037e16 eventsui/eventsengine/inc/evtmgmtuilbtadapter.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/eventsui/eventsengine/inc/evtmgmtuilbtadapter.h Wed Sep 01 12:31:27 2010 +0100 @@ -0,0 +1,389 @@ +/* +* Copyright (c) 2008 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: It is adapter class to handle lbt operations +* +*/ + + +#ifndef EVTMGMTUILBTADAPTER_H_ +#define EVTMGMTUILBTADAPTER_H_ + +#include // CBase + +#include +#include +#include +#include +#include +#include + +#include "evtmgmtuilbtobserver.h" +#include "evtdefs.h" + +class CLbtStartupTrigger; +class CLbtGeoCircle; +class CLbtTriggerConditionArea; +class CLbtTriggerChangeEventNotifier; +class CLbtTriggerFilterByAttribute; + +/** + * @class CEvtMgmtUiLbtAdapter + * Class that represents the adapter for lbt operation + * + * This class acts as an adapter for lbt engine. + * It is used to create, update, delete, retrive triggers. + * It is also used to change state of the trigger + * + * @since S60 v9.1 + */ + +class CEvtMgmtUiLbtAdapter : public CActive, + public MLbtTriggerChangeEventObserver + { +public: + /* + * state machine for lbt operation + */ + enum TLbtAdtapterState + { + /* + * state for creating trigger + */ + ELbtAdapterCreate, + + /* + * state for updating trigger + */ + ELbtAdapterUpdate, + + /* + * state for updating command line argument of trigger + */ + ELbtAdapterUpdateCmdLineArg, + + /* + * state for deleting trigger + */ + ELbtAdapterDelete, + + /* + * state for deleting triggers + */ + ELbtAdapterDeleteTriggers, + + /* + * state for changing state of the trigger + */ + ELbtAdapterSetTriggerState, + + /* + * state for changing state of the triggers + */ + ELbtAdapterSetTriggersState, + + /** + * Default option + */ + ENone + }; + + public: // Constructor and destructor + /** + * Static Two phase constructor + * + */ + static CEvtMgmtUiLbtAdapter* NewL(MEvtMgmtUiLbtObserver& aObserver); + + /** + * Virtual destructor + */ + virtual ~CEvtMgmtUiLbtAdapter(); + + public: // new functions + /* + * It is the wrapper function to trap leaving function CreateTriggerL() + * + * @since S60 v9.1 + * + * @param [in] aCenter - location of the trigger. + * @param [in] aRadiusInKiloMeters - radius of the trigger + * @param [in] aTriggerName - name of the trigger + * @param [in] aState - state of the trigger + * @param [in] aTriggerId - trigger id of the trigger - + * if it is zero, trigger will be created + * othewise it will be updated + * @param [in] aEventId - event id of the triggering event + * It will be passed as command line argument. + */ + void CreateTrigger(const TCoordinate& aCenter, + TReal aRadiusInKiloMeters, const TPtrC& aTriggerName, + CLbtTriggerEntry::TLbtTriggerState aState ); + + + /* + * CEvtMgmtUiLbtAdapter ::UpdateCmdLineArgL() + * Update the command line argument of the give trigger + * @param[in] aTriggerId - id of the trigger + * @param[in] aEventId - event id of the triggering event + * It will be passed as command line argument. + */ + void UpdateCmdLineArgL( TLbtTriggerId aTriggerId, TEvtEventId aEventId ); + + /* + * CEvtMgmtUiLbtAdapter ::UpdateLocationL() + * Update the location of the give trigger + * @param[in] aTriggerId - id of the trigger + * @param [in] aCenter - location of the trigger. + * @param [in] aRadiusInMeters - radius of the trigger + * @param [in] aState - state of the trigger + */ + void UpdateTriggerL( TLbtTriggerId aTriggerId, + const TCoordinate& aCenter, TReal aRadiusInKiloMeters, + CLbtTriggerEntry::TLbtTriggerState aState ); + /* + * It is used to delete trigger from lbt database + * + * @since S60 v9.1 + * + * @param [in] aTriggerId - trigger id of the trigger + * TODO: @param [in] aDeleteTriggerOnly remove + * + */ + void DeleteTriggerL( TLbtTriggerId aTriggerId ); + + /* + * It is used to delete triggers from lbt database + * + * @since S60 v9.1 + * + * @param [in] aTriggerIdList - id-list of triggers to be deleted. + * + */ + void DeleteTriggersL( const RArray& aTriggerIdList ); + + /* + * It is used to change the state of the trigger. + * + * @since S60 v9.1 + * + * @param [in] aTriggerId - trigger id of the trigger + * @param [in] aState - value to which given trigger's state should be changed + * + */ + void SetTriggerStateL( TLbtTriggerId aTriggerId, + CLbtTriggerEntry::TLbtTriggerState aState ); + + /* + * It is used to change the state of the triggers. + * + * @since S60 v9.1 + * + * @param [in] aTriggerIdList - trigger id list of the triggers + * @param [in] aState - value to which given trigger's state should be changed + * + */ + void SetTriggersStateL( const RArray& aTriggerIdList, + CLbtTriggerEntry::TLbtTriggerState aState ) ; + + /* + * It is used to retrieve location information of given trigger + * from lbt database + * + * @since S60 v9.1 + * + * @param [in] aTriggerId - trigger id of the trigger + * @param [out] aCenter - location details of the given trigger + * + */ + void RetrieveLocationL( TLbtTriggerId aTriggerId, TCoordinate& aCenter ); + + /* + * It is used to retrieve list of triggers created by EventsUi + * + * @since S60 v9.1 + * + * @param [in] triggerList - Reference to trigger array + * @param [out] aState - Active/Inactive State of Trigger + * + */ + void GetTriggerListL( RArray& aTriggerList, + CLbtTriggerEntry::TLbtTriggerState aState ); + + /* + * It is used to retrieve list of triggers created by EventsUi + * + * @since S60 v9.1 + * + * @param [in] triggerList - Reference to trigger array + * @param [out] aState - Valid/Invalid State of Trigger + * + */ + void GetTriggerListL( RArray& aTriggerList, + TLbtTriggerDynamicInfo::TLbtTriggerValidity aValid ); + /* + * It is used to returns the Position Accuracy of Fired Trigger. + * + * @since S60 v9.1 + * + * @param [in] aPosition - Contains the Position Accuracy for Fired Trigger + * @param [in] aTriggerId - Trigger Id + * @param [out] TBool - Boolean value for Trigger Fired or Not. + * + */ + TBool GetFiredPositionL( TPosition& aPosition, + const TLbtTriggerId aTriggerId ); + + /* + * It is used to get the distance accuracy for Fired trigger. + * + * @since S60 v9.1 + * + * @param [in] aTriggerId - Trigger Id + * @param [out] aDistance - Accuracy in metres at which the trigger fired. + * + */ + void GetFiredTriggerAccuracyL( TLbtTriggerId aTriggerId, TReal32& aDistance ); + + /* + * It is used to retrieve State of given trigger + * from lbt database + * + * @since S60 v9.1 + * + * @param [in] aTriggerId - trigger id of the trigger + * @param [out] TLbtTriggerState - State of the given trigger + * + */ + CLbtTriggerEntry::TLbtTriggerState GetTriggerStateL( + TLbtTriggerId aTriggerId ); + + void CancelRequest(); + + public: //derived + + /* + * Derived from CActive + */ + void RunL(); + + /* + * Derived from CActive + */ + void DoCancel(); + + /* + * Derived from CActive + */ + TInt RunError( TInt aError ); + + /* + * Derived from MLbtTriggerChangeEventObserver + */ + void TriggerChangedL(const TLbtTriggerChangeEvent &aEvent); + + private: // Constructor + /** + * C++ Default constructor + */ + CEvtMgmtUiLbtAdapter(MEvtMgmtUiLbtObserver& aObserver); + + /** + * Second phase of the two phase constructor + */ + void ConstructL(); + + private: // New functions + /* + * It is used to create of update trigger. + * If trigger id is zero, it will create trigger. + * If trigger id is non-zero, it will update the trigger. + * + * @since S60 v9.1 + * + * @param [in] aCenter - location of the trigger. + * @param [in] aRadiusInKiloMeters - radius of the trigger + * @param [in] aTriggerName - name of the trigger + * @param [in] aState - state of the trigger + * @param [in] aTriggerId - trigger id of the trigger - + * if it is zero, trigger will be created + * othewise it will be updated + * @param [in] aEventId - event id of the triggering event + * It will be passed as command line argument. + */ + void CreateTriggerL(const TCoordinate& aCenter, + TReal aRadiusInKiloMeters, const TPtrC& aTriggerName, + CLbtTriggerEntry::TLbtTriggerState aState ); + + /* + * It is used to create the Codition Area for a trigger depending on the trigger type. + * + * @since S60 v9.1 + * + * @param [in] aCenter - location of the trigger. + * @param [out] CLbtTriggerConditionArea - Condition Area for Trigger. + */ + CLbtTriggerConditionArea* GetConditionAreaL( + const TCoordinate& aCenter, + TReal aRadiusInKiloMeters ); + private: + /* + * Handler to lbt session + */ + RLbt iLbt; + + /* + * Handler to lbt session + */ + RLbt iLbtObserver; + + /* + * Handler to lbt server + */ + RLbtServer iLbtServer; + + /** + * Reference Trigger Change Notifier + * + */ + CLbtTriggerChangeEventNotifier * iEventChangeObserver; + + /* + * Id of a trigger + */ + TLbtTriggerId iTriggerId; + + /* + * State machine's current state + */ + TLbtAdtapterState iState; + + /* + * start up trigger object + * owns + */ + CLbtStartupTrigger* iTrigger; + + /* + * Observer to notify lbt changes or errors + */ + MEvtMgmtUiLbtObserver& iObserver; + + /* + * Filter to do any lbt operation(Update State). + * Does not own + */ + CLbtTriggerFilterByAttribute* iAttrFilter; + }; + +#endif //EVTMGMTUILBTADAPTER_H_