eventsui/eventsengine/src/evtmgmtuilbtadapter.cpp
branchRCL_3
changeset 18 870918037e16
parent 0 522cd55cc3d7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/eventsui/eventsengine/src/evtmgmtuilbtadapter.cpp	Wed Sep 01 12:31:27 2010 +0100
@@ -0,0 +1,737 @@
+/*
+* Copyright (c) 2008-2009 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
+*
+*/
+
+#include <lbtgeocircle.h> 
+#include <lbttriggerconditionarea.h> 
+#include <lbttriggerfilterbyattribute.h> 
+#include <lbtlisttriggeroptions.h>
+#include <lbtstartuptrigger.h> 
+#include <lbsrequestor.h> 
+#include <lbttriggerinfo.h> 
+#include <lbttriggerchangeeventnotifier.h>
+#include <e32cmn.h>
+
+#include "evtmgmtuilbtadapter.h"
+#include "evtdebug.h"
+
+// CONSTANTS
+const TInt KUnitConversion = 1000;                        // Unit Converter
+_LIT( KTriggerHandlingProcessName, "evthandler.exe" );    // Handler Process Name
+_LIT_SECURE_ID( KTriggerHandlingProcessSID,  0x2001E667); // Handler Process UID
+_LIT_SECURE_ID( KManagerProcessSID,  0x2001E668);         // Manager Process UID
+_LIT( KMyRequestor , "Requestor" );                       //Set requestor information
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter ::CEvtMgmtUiLbtAdapter()
+// ---------------------------------------------------------------------------
+//
+CEvtMgmtUiLbtAdapter::CEvtMgmtUiLbtAdapter(MEvtMgmtUiLbtObserver&  aObserver)
+:CActive( EPriorityStandard ), iObserver(aObserver)
+    {   
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter ::ConstructL()
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::ConstructL()
+    {   
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::ConstructL()" );
+    
+    CActiveScheduler::Add(this);  
+    EVTUIDEBUG("scheduler added" );
+    
+    // Create a Connection to LBT Sever.
+    User::LeaveIfError( iLbtServer.Connect() );
+    EVTUIDEBUG("lbtserver connected" );
+    
+    // Open 2 Sessions - One for LBT operation and Other for LBT observer 
+    User::LeaveIfError( iLbt.Open(iLbtServer) );
+    User::LeaveIfError( iLbtObserver.Open(iLbtServer) );
+    EVTUIDEBUG("lbt is opened" );
+    
+    // Create a Trigger change notifier to listen to any changes to triggers. 
+    iEventChangeObserver = CLbtTriggerChangeEventNotifier::NewL( iLbtObserver, *this );
+    iEventChangeObserver->Start();
+    EVTUIDEBUG("Trigger Change Notifier is started" );
+    
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::ConstructL()" );
+    }
+    
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter ::NewL()
+// ---------------------------------------------------------------------------
+//
+CEvtMgmtUiLbtAdapter* CEvtMgmtUiLbtAdapter::NewL(MEvtMgmtUiLbtObserver&  aObserver)
+    {
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::NewL()" );
+    CEvtMgmtUiLbtAdapter * self = new (ELeave) CEvtMgmtUiLbtAdapter(aObserver);
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    CleanupStack::Pop(self);
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::NewL()" );
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter ::~CEvtMgmtUiLbtAdapter()
+// ---------------------------------------------------------------------------
+//
+CEvtMgmtUiLbtAdapter::~CEvtMgmtUiLbtAdapter()
+    {     
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::~CEvtMgmtUiLbtAdapter()" );
+    Cancel();
+    if(iAttrFilter)
+        {
+        delete iAttrFilter;
+        iAttrFilter = NULL;
+        }
+        
+    if(iTrigger)
+        {
+        delete iTrigger;
+        iTrigger = NULL;
+        }
+    	
+    delete iEventChangeObserver;
+    
+    //Close lbt session and server
+    iLbtObserver.Close();
+    iLbt.Close();
+    iLbtServer.Close();
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::~CEvtMgmtUiLbtAdapter()" );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::CreateTrigger
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::CreateTrigger(const TCoordinate& aCenter,
+        TReal aRadiusInKiloMeters, const TPtrC& aTriggerName,
+        CLbtTriggerEntry::TLbtTriggerState aState )
+    {       
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::CreateOrUpdateTrigger()" );
+    
+    TRAPD(err, CreateTriggerL( aCenter, aRadiusInKiloMeters, aTriggerName, 
+                            aState ) );
+    
+    if( err!=KErrNone )
+        iObserver.NotifyLbtError(err, iState);
+    
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::CreateOrUpdateTrigger()" );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::CreateTriggerL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::CreateTriggerL(const TCoordinate& aCenter,
+        TReal aRadiusInKiloMeters, const TPtrC& aTriggerName,
+        CLbtTriggerEntry::TLbtTriggerState aState )
+    {        
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::CreateTriggerL()");
+    
+    if ( IsActive() )
+        {
+        User::Leave( KErrInUse );            
+        }
+	
+    //set state of the machine
+    iState = ELbtAdapterCreate;
+    
+    EVTUIDEBUG("========== Trigger Parameter Details ===============" );   
+    CLbtTriggerConditionArea* cond = GetConditionAreaL(aCenter, aRadiusInKiloMeters);
+    CleanupStack::PushL(cond);     
+   
+    /*********************** Debug ******************************************/
+    TBuf<256> debug;
+    debug.Copy( aTriggerName );
+    EVTUIDEBUG1("Trigger Name = %S", &debug );
+    EVTUIDEBUG1("Event State = %d", aState );
+    EVTUIDEBUG1("Radius = %f", aRadiusInKiloMeters*KUnitConversion );
+	debug.Copy( KTriggerHandlingProcessName() );
+	EVTUIDEBUG1("Trigger handling process name: %S", &debug );
+	EVTUIDEBUG1("Trigger handling process SID: %x", KTriggerHandlingProcessSID);
+	EVTUIDEBUG1("Manager process SID: %x", KManagerProcessSID);
+    /*********************** Debug ******************************************/
+    EVTUIDEBUG("========== Trigger Parameter Details end ===============" );   
+    
+    if(iTrigger)
+       {
+       delete iTrigger;
+       iTrigger = NULL;
+       }
+   
+    // Create the Startup trigegr without the command line.
+    iTrigger = CLbtStartupTrigger::NewL(          
+                            aTriggerName,                           // Trigger name
+                            aState,                                 // Trigger state
+                            CRequestorBase::ERequestorService,      // Requestor type
+                            CRequestorBase::EFormatApplication,     // Requestor format
+                            KMyRequestor,                           // Requestor data
+                            KManagerProcessSID,                     // Manager Uid
+                            cond,                                   // Trigger condition
+                            KTriggerHandlingProcessName,            // Trigger handler app
+                            KTriggerHandlingProcessSID
+                            );          //Trigger state
+   
+  	CleanupStack::Pop( cond ); //ownership of cond is transferred.    
+	
+    SetActive();
+    iStatus = KRequestPending;
+    
+    EVTUIDEBUG("Before CreateTrigger" );      
+    iLbt.CreateTrigger( *iTrigger, iTriggerId, EFalse, iStatus );            
+    EVTUIDEBUG("After CreateTrigger" );      
+
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::CreateTriggerL()");
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::GetConditionAreaL
+// ---------------------------------------------------------------------------
+//
+CLbtTriggerConditionArea* CEvtMgmtUiLbtAdapter::GetConditionAreaL( 
+                const TCoordinate& aCenter, TReal aRadiusInKiloMeters )
+    {
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::GetConditionAreaL()");
+    // Create the Condition Area object depending on the trigger type.
+    CLbtTriggerConditionArea* cond = NULL;
+
+    if( Math::IsNaN( aCenter.Latitude() ) || Math::IsNaN( aCenter.Longitude() ) )
+        {
+        //Define the triggering area   
+        CLbtGeoCircle * trigArea = CLbtGeoCircle ::NewLC( TCoordinate(TReal(0), TReal(0), TReal(0) ),1*KUnitConversion );
+        //Construct trigger condition
+        cond = CLbtTriggerConditionArea::NewL
+                    (trigArea,CLbtTriggerConditionArea::EFireOnEnter );
+        CleanupStack::Pop( trigArea ); //ownership of trigArea is transferred.
+        }
+    else
+        {
+        //Define the triggering area   
+        CLbtGeoCircle * trigArea = CLbtGeoCircle ::NewLC( aCenter,aRadiusInKiloMeters*KUnitConversion );
+        //Construct trigger condition
+        cond = CLbtTriggerConditionArea::NewL
+                    (trigArea,CLbtTriggerConditionArea::EFireOnEnter );
+        CleanupStack::Pop( trigArea ); //ownership of trigArea is transferred.                
+        }
+    EVTUIDEBUG1("Lat = %f", aCenter.Latitude() );
+    EVTUIDEBUG1("Long = %f", aCenter.Longitude() );
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::GetConditionAreaL()");
+    return cond;
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL( TLbtTriggerId aTriggerId, 
+                                                        TEvtEventId aEventId )
+    {
+    EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL() - %d", aTriggerId );
+    //set commandline argument
+    const TInt KTriggerIdLength(132); 
+    _LIT(KDelimiter, ":");
+    TBuf<KTriggerIdLength> cmdArg;
+    cmdArg.Zero();
+    cmdArg.AppendNumUC(EEvtActionFired);
+    cmdArg.Append(KDelimiter());
+    cmdArg.AppendNumUC(aEventId);
+       
+    CLbtStartupTrigger* trigger = CLbtStartupTrigger::NewLC();
+    trigger->SetId( aTriggerId );
+    trigger->SetCommandLineL( cmdArg );    
+    iState = ELbtAdapterUpdateCmdLineArg;
+    
+	EVTUIDEBUG1("Before UpdateTriggerL  - %d", aTriggerId );
+    iLbt.UpdateTriggerL( *trigger, CLbtTriggerEntry::EAttributeStartUpCommandLine, ELbtFalse );  
+	EVTUIDEBUG1("After UpdateTriggerL  - %d", aTriggerId ); 
+    
+    CleanupStack::PopAndDestroy(trigger);
+    EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL() - %d", aTriggerId );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::UpdateTriggerL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::UpdateTriggerL( TLbtTriggerId aTriggerId,
+        const TCoordinate& aCenter, TReal aRadiusInKiloMeters,
+        CLbtTriggerEntry::TLbtTriggerState aState )
+    {
+    EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::UpdateTriggerL() - %d", aTriggerId )
+    EVTUIDEBUG1("Event State = %d", aState );
+    
+    if ( IsActive() )
+       {    
+       User::Leave( KErrInUse );            
+       }
+    
+    //Set state of the machine
+    iState = ELbtAdapterUpdate;   
+
+    // Create the Condition Area object depending on the trigger type.
+    CLbtTriggerConditionArea* cond = GetConditionAreaL(aCenter, aRadiusInKiloMeters );
+    CleanupStack::PushL(cond); 
+       
+    //create startup trigger object
+    if(iTrigger)
+       {
+       delete iTrigger;
+       iTrigger = NULL;
+       }
+    iTrigger = CLbtStartupTrigger::NewL();
+    iTrigger->SetId( aTriggerId );
+    iTrigger->SetCondition(cond);    
+    CleanupStack::Pop(cond);    //ownership is transferred to trigger.
+    iTrigger->SetState(aState);
+    
+    // Create the Trigger update attributes mask. 
+    TLbtTriggerAttributeFieldsMask fieldsMask;
+    fieldsMask = CLbtTriggerEntry::EAttributeState | CLbtTriggerEntry::EAttributeCondition;
+    
+    SetActive();
+    iStatus = KRequestPending;
+    
+    EVTUIDEBUG1("Before UpdateTriggerL  - %d", aTriggerId );
+    iLbt.UpdateTrigger( *iTrigger, fieldsMask, ELbtFalse, iStatus);  
+    EVTUIDEBUG1("After UpdateTriggerL  - %d", aTriggerId ); 
+    
+    EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::UpdateTriggerL() - %d", aTriggerId );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::SetTriggerStateL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::SetTriggerStateL( TLbtTriggerId  aTriggerId,
+									CLbtTriggerEntry::TLbtTriggerState aState )  
+    {
+    EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::SetTriggerStateL() - %d", aTriggerId );
+    EVTUIDEBUG2("SetTriggerState for Triggerid =%d eventstatus = %d ", aTriggerId, aState);
+    
+    //Set state of the machine
+    iState = ELbtAdapterSetTriggerState;
+    iTriggerId = aTriggerId;
+    
+	EVTUIDEBUG1("Before SetTriggerStateL  - %d", aTriggerId );
+    iLbt.SetTriggerStateL(aTriggerId, aState, ELbtFalse );
+	EVTUIDEBUG1("After SetTriggerStateL  - %d", aTriggerId );
+	
+    EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::SetTriggerStateL() - %d", aTriggerId );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::SetTriggersStateL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::SetTriggersStateL( const RArray<TLbtTriggerId>& aTriggerIdList,
+                                    CLbtTriggerEntry::TLbtTriggerState aState )  
+    {
+    EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::SetTriggersStateL() Count - %d", aTriggerIdList.Count() );
+    
+    if ( IsActive() )
+       {    
+       User::Leave( KErrInUse );            
+       }
+    
+    //Set state of the machine
+    iState = ELbtAdapterSetTriggersState;  
+    
+    if( iAttrFilter )
+    	{
+    	delete iAttrFilter;
+    	iAttrFilter = NULL;
+    	}
+        
+    // Create an attribute filter to include all the trigger ids
+    iAttrFilter = CLbtTriggerFilterByAttribute::NewL();
+    
+    for( TInt index=0; index<aTriggerIdList.Count(); index++ )
+        {
+        iAttrFilter->AddTriggerIdL(aTriggerIdList[index]);
+        }
+            
+    SetActive();
+    iStatus = KRequestPending;
+    iLbt.SetTriggersState( iStatus, aState, ELbtFalse, iAttrFilter );
+    
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::SetTriggersState()");
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::DeleteTriggerL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::DeleteTriggerL( TLbtTriggerId  aTriggerId )  
+    {
+    EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::DeleteTriggerL() TriggerID = %d" , aTriggerId);
+    EVTUIDEBUG2("SetTriggerState for Triggerid =%d eventstatus = %d ", aTriggerId, iState);
+      
+    //set state 
+    iState = ELbtAdapterDelete;
+    
+    //Set it to member variable so that it can be used in RunL to delete trigger
+    iTriggerId = aTriggerId;
+    
+	EVTUIDEBUG1("Before DeleteTriggerL  - %d", aTriggerId );
+    iLbt.DeleteTriggerL( iTriggerId );
+	EVTUIDEBUG1("After DeleteTriggerL  - %d", aTriggerId );
+    
+    EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::DeleteTriggerL() TriggerID = %d" , aTriggerId);
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::DeleteTriggersL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::DeleteTriggersL( const RArray<TLbtTriggerId>& aTriggerIdList )  
+    {
+    EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::DeleteTriggersL() Count - %d", aTriggerIdList.Count() );
+    
+    if ( IsActive() )
+        {
+        User::Leave( KErrInUse );            
+        }
+    iState = ELbtAdapterDeleteTriggers;
+    SetActive();
+    iStatus = KRequestPending;
+        
+    iLbt.DeleteTriggers( aTriggerIdList, iStatus );
+    
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::DeleteTriggersL()");
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::GetTriggerStateL
+// ---------------------------------------------------------------------------
+//
+CLbtTriggerEntry::TLbtTriggerState CEvtMgmtUiLbtAdapter::GetTriggerStateL( TLbtTriggerId  aTriggerId )
+    {
+    EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::GetTriggerStateL = %d ", aTriggerId);
+    CLbtTriggerEntry::TLbtTriggerState state = CLbtTriggerEntry::EStateDisabled;
+    
+	EVTUIDEBUG1("Before GetTriggerLC  - %d", aTriggerId );
+    CLbtTriggerInfo * info = iLbt.GetTriggerLC( aTriggerId );
+	EVTUIDEBUG1("After GetTriggerLC  - %d", aTriggerId );
+    
+    if(info)
+        {
+        CLbtTriggerEntry* entry = info->TriggerEntry();
+        state = entry->State();
+        CleanupStack::PopAndDestroy(info);
+        }
+    
+    EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::GetTriggerStateL = %d ", aTriggerId);
+    
+    return state;
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::CancelRequest()
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::CancelRequest()
+    {     
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::CancelRequest()" );
+    Cancel();
+    if(iStatus.Int()==KErrCancel)
+        {       
+		iObserver.NotifyLbtError(KErrCancel, iState);
+		}
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::CancelRequest()" );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::RetrieveLocationL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::RetrieveLocationL( TLbtTriggerId aTriggerId, TCoordinate& aCenter )
+    {
+    EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::RetrieveLocationL() TriggerId = %d ", aTriggerId );   
+    
+	EVTUIDEBUG1("Before GetTriggerLC  - %d", aTriggerId );
+    CLbtTriggerInfo * info = iLbt.GetTriggerLC( aTriggerId );
+	EVTUIDEBUG1("After GetTriggerLC  - %d", aTriggerId );
+    
+    if(info)
+           {
+           CLbtTriggerEntry* entry = info->TriggerEntry();
+           CLbtTriggerConditionArea* triggArea =  static_cast< CLbtTriggerConditionArea*>( entry->GetCondition());
+           CLbtGeoAreaBase* triggGeoArea = static_cast< CLbtGeoAreaBase*>( triggArea->TriggerArea());
+           if( triggGeoArea->Type() == CLbtGeoAreaBase::ECircle)
+               {
+               CLbtGeoCircle* loc = static_cast<CLbtGeoCircle*>( triggArea->TriggerArea() );          
+               aCenter = loc->Center();
+               EVTUIDEBUG1("GetTriggerLC: Latitude = %f", aCenter.Latitude() );
+               EVTUIDEBUG1("GetTriggerLC: Longitude = %f", aCenter.Longitude() );
+               }
+           else
+               {
+               User::Leave(KErrNotSupported);
+               }
+    	   CleanupStack::PopAndDestroy(); //info
+           }   
+    
+    EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::RetrieveLocationL() TriggerId = %d ", aTriggerId );  
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL( TLbtTriggerId aTriggerId, TReal32& aDistance )
+    {
+    EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL() TriggerId = %d ", aTriggerId );   
+    
+	EVTUIDEBUG1("Before GetTriggerLC  - %d", aTriggerId );
+    CLbtTriggerInfo * info = iLbt.GetTriggerLC( aTriggerId );
+	EVTUIDEBUG1("After GetTriggerLC  - %d", aTriggerId );
+    
+    if(info)
+		{
+        CLbtTriggerEntry* entry = info->TriggerEntry();
+        CLbtTriggerConditionArea* triggArea =  static_cast< CLbtTriggerConditionArea*>( entry->GetCondition());
+        CLbtGeoAreaBase* triggGeoArea = static_cast< CLbtGeoAreaBase*>( triggArea->TriggerArea());
+        if( triggGeoArea->Type() == CLbtGeoAreaBase::ECircle)
+            {
+            TLbtTriggerDynamicInfo* dynInfo = info->DynInfo();
+            CLbtGeoCircle* circle = static_cast<CLbtGeoCircle*> (triggGeoArea);
+            TCoordinate cord = circle->Center();
+            cord.Distance(dynInfo->iFiredLocality, aDistance);
+            aDistance = aDistance - circle->Radius();
+            aDistance = Abs(aDistance);
+            }
+        EVTUIDEBUG1( "Fired Trigger Accuracy in Distance = %f", aDistance );
+        CleanupStack::PopAndDestroy(); //info
+		}   
+    
+    EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL() TriggerId = %d ", aTriggerId );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::RunError
+// ---------------------------------------------------------------------------
+//
+TInt CEvtMgmtUiLbtAdapter::RunError( TInt aError )
+    {
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::RunError()" );
+    if( aError != KErrNone )
+        {
+        //if error, notify it to the engine.      
+        EVTUIDEBUG1("CEvtMgmtUiLbtAdapter RunError error = %d", aError );
+        iObserver.NotifyLbtError( aError, iState);
+        }
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::RunError()" );
+    return KErrNone;
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter ::RunL()
+// Inherited from CActive
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::RunL() 
+    {
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::RunL()" );
+        
+    if(iStatus.Int()!=KErrNone)
+        {       
+        EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::RunL() error =%d", iStatus.Int());
+        User::Leave( iStatus.Int() );
+        return;
+        }
+    
+    EVTUIDEBUG("LbtAdapter error = 0" );
+    
+    switch(iState)
+        {
+        case ELbtAdapterCreate: 
+            {
+			 iState = ELbtAdapterCreate;
+			 
+            //delete trigger object when trigger is successfuly created
+            if(iTrigger)            
+                {
+        		EVTUIDEBUG("Deleting trigger entry after Create" );
+                delete iTrigger;
+                iTrigger = NULL;
+                }
+            break;
+            }
+        case ELbtAdapterUpdate:
+            {			 
+            //delete trigger object when trigger is successfuly updated
+            if(iTrigger)            
+                {
+        		EVTUIDEBUG("Deleting trigger entry after Update" );
+                delete iTrigger;
+                iTrigger = NULL;
+                }
+            break;
+            }
+        case ELbtAdapterDeleteTriggers:
+            {
+            EVTUIDEBUG("Triggers are deleted successfully");
+            }
+            break;
+        case ELbtAdapterSetTriggersState:
+            {
+		    if(iAttrFilter)
+		        {
+		        delete iAttrFilter;
+		        iAttrFilter = NULL;
+		        }
+            EVTUIDEBUG("State of triggers are changed successfully");
+            break;
+            }
+        default:
+            { 
+            break;
+            }
+        }
+    //Notify engine about lbt changes
+    iObserver.NotifyLbtChangeL(iTriggerId, iState);               
+    
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::RunL()" );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter ::DoCancel()
+// Inherited from CActive
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::DoCancel()
+    {    
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::DoCancel()" );
+    iLbt.CancelAll();
+    //iObserver.NotifyLbtError(KErrCancel, iState);
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::DoCancel()" );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::GetTriggerListL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::GetTriggerListL( RArray<TLbtTriggerId>& aTriggerList,
+								CLbtTriggerEntry::TLbtTriggerState aState )
+    {
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::GetTriggerListL()" );
+	CLbtListTriggerOptions *listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL(listOptions);  
+      
+	CLbtTriggerFilterByAttribute* filter = CLbtTriggerFilterByAttribute::NewLC();
+	
+    // List only valid triggers and whose state is aState.
+	filter->AddTriggerStateL( aState );
+    filter->AddTriggerValidityL( TLbtTriggerDynamicInfo::EValid );
+    
+	listOptions->SetFilter( filter );
+	
+	EVTUIDEBUG("Before ListTriggerIdsL");
+	iLbt.ListTriggerIdsL( aTriggerList, listOptions );
+	EVTUIDEBUG("After ListTriggerIdsL");
+
+    CleanupStack::PopAndDestroy(2);// filter, listOptions
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::GetTriggerListL()" );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::GetTriggerListL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::GetTriggerListL( RArray<TLbtTriggerId>& aTriggerList,
+                TLbtTriggerDynamicInfo::TLbtTriggerValidity aValid )
+    {
+    EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::GetTriggerListL()" );
+    CLbtListTriggerOptions *listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL(listOptions);  
+      
+    CLbtTriggerFilterByAttribute* filter = CLbtTriggerFilterByAttribute::NewLC();
+    
+    // List only triggers of status aValid
+    filter->AddTriggerValidityL( aValid );
+    
+    listOptions->SetFilter( filter );
+    
+    EVTUIDEBUG("Before ListTriggerIdsL");
+    iLbt.ListTriggerIdsL( aTriggerList, listOptions );
+    EVTUIDEBUG("After ListTriggerIdsL");
+
+    CleanupStack::PopAndDestroy(2);// filter, listOptions
+    EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::GetTriggerListL()" );
+    }
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::TriggerChangedL
+// ---------------------------------------------------------------------------
+//
+void CEvtMgmtUiLbtAdapter::TriggerChangedL(
+							const TLbtTriggerChangeEvent &aEvent)
+	{
+	EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::TriggerChangedL()" );
+	switch( aEvent.iEventType )
+		{
+		case ELbtTriggerChangeEventMultiple:
+		iObserver.NotifyTriggerChangeL(aEvent.iTriggerId, MEvtMgmtUiLbtObserver::ETriggerMultipleModified);
+		break;
+		case ELbtTriggerChangeEventDeleted:
+		iObserver.NotifyTriggerChangeL(aEvent.iTriggerId, MEvtMgmtUiLbtObserver::ETriggerDeleted);
+		break;
+		case ELbtTriggerChangeEventUpdated:
+		iObserver.NotifyTriggerChangeL(aEvent.iTriggerId, MEvtMgmtUiLbtObserver::ETriggerModified);
+		break;
+		default:
+		break;
+		}
+	EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::TriggerChangedL()" );
+	}
+
+// ---------------------------------------------------------------------------
+// CEvtMgmtUiLbtAdapter::GetFiredPositionL
+// ---------------------------------------------------------------------------
+//
+TBool CEvtMgmtUiLbtAdapter::GetFiredPositionL( TPosition& aPosition,
+											const TLbtTriggerId aTriggerId )
+	{
+	EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::GetFiredPositionL() - %d", aTriggerId );
+	RArray<TLbtTriggerFireInfo> aTriggerInfoList;
+	
+	EVTUIDEBUG1("Before GetFiredTriggersL  - %d", aTriggerId );
+	iLbt.GetFiredTriggersL( aTriggerInfoList );
+	EVTUIDEBUG1("After GetFiredTriggersL  - %d", aTriggerId );
+	
+	TInt count = aTriggerInfoList.Count();
+	TBool found(EFalse);
+	
+	for( TInt i=0; i<count; i++ )
+		{
+		if ( aTriggerInfoList[i].iTriggerId == aTriggerId )
+			{
+			if(aTriggerInfoList[i].iAreaType == CLbtGeoAreaBase::ECircle)
+				{ 
+				found = ETrue;
+				aTriggerInfoList[i].iFiredPositionInfo.GetPosition( aPosition );
+				}
+			}
+		}
+	aTriggerInfoList.Close();
+	EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::GetFiredPositionL() - %d", aTriggerId );
+	return found;
+	}
+//end of file