eventsui/eventsengine/src/evtmgmtuilbtadapter.cpp
branchRCL_3
changeset 17 1fc85118c3ae
parent 16 8173571d354e
child 18 870918037e16
equal deleted inserted replaced
16:8173571d354e 17:1fc85118c3ae
     1 /*
       
     2 * Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  It is adapter class to handle lbt operations
       
    15 *
       
    16 */
       
    17 
       
    18 #include <lbtgeocircle.h> 
       
    19 #include <lbttriggerconditionarea.h> 
       
    20 #include <lbttriggerfilterbyattribute.h> 
       
    21 #include <lbtlisttriggeroptions.h>
       
    22 #include <lbtstartuptrigger.h> 
       
    23 #include <lbsrequestor.h> 
       
    24 #include <lbttriggerinfo.h> 
       
    25 #include <lbttriggerchangeeventnotifier.h>
       
    26 #include <e32cmn.h>
       
    27 
       
    28 #include "evtmgmtuilbtadapter.h"
       
    29 #include "evtdebug.h"
       
    30 
       
    31 // CONSTANTS
       
    32 const TInt KUnitConversion = 1000;                        // Unit Converter
       
    33 _LIT( KTriggerHandlingProcessName, "evthandler.exe" );    // Handler Process Name
       
    34 _LIT_SECURE_ID( KTriggerHandlingProcessSID,  0x2001E667); // Handler Process UID
       
    35 _LIT_SECURE_ID( KManagerProcessSID,  0x2001E668);         // Manager Process UID
       
    36 _LIT( KMyRequestor , "Requestor" );                       //Set requestor information
       
    37 
       
    38 // ---------------------------------------------------------------------------
       
    39 // CEvtMgmtUiLbtAdapter ::CEvtMgmtUiLbtAdapter()
       
    40 // ---------------------------------------------------------------------------
       
    41 //
       
    42 CEvtMgmtUiLbtAdapter::CEvtMgmtUiLbtAdapter(MEvtMgmtUiLbtObserver&  aObserver)
       
    43 :CActive( EPriorityStandard ), iObserver(aObserver)
       
    44     {   
       
    45     }
       
    46 
       
    47 // ---------------------------------------------------------------------------
       
    48 // CEvtMgmtUiLbtAdapter ::ConstructL()
       
    49 // ---------------------------------------------------------------------------
       
    50 //
       
    51 void CEvtMgmtUiLbtAdapter::ConstructL()
       
    52     {   
       
    53     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::ConstructL()" );
       
    54     
       
    55     CActiveScheduler::Add(this);  
       
    56     EVTUIDEBUG("scheduler added" );
       
    57     
       
    58     // Create a Connection to LBT Sever.
       
    59     User::LeaveIfError( iLbtServer.Connect() );
       
    60     EVTUIDEBUG("lbtserver connected" );
       
    61     
       
    62     // Open 2 Sessions - One for LBT operation and Other for LBT observer 
       
    63     User::LeaveIfError( iLbt.Open(iLbtServer) );
       
    64     User::LeaveIfError( iLbtObserver.Open(iLbtServer) );
       
    65     EVTUIDEBUG("lbt is opened" );
       
    66     
       
    67     // Create a Trigger change notifier to listen to any changes to triggers. 
       
    68     iEventChangeObserver = CLbtTriggerChangeEventNotifier::NewL( iLbtObserver, *this );
       
    69     iEventChangeObserver->Start();
       
    70     EVTUIDEBUG("Trigger Change Notifier is started" );
       
    71     
       
    72     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::ConstructL()" );
       
    73     }
       
    74     
       
    75 // ---------------------------------------------------------------------------
       
    76 // CEvtMgmtUiLbtAdapter ::NewL()
       
    77 // ---------------------------------------------------------------------------
       
    78 //
       
    79 CEvtMgmtUiLbtAdapter* CEvtMgmtUiLbtAdapter::NewL(MEvtMgmtUiLbtObserver&  aObserver)
       
    80     {
       
    81     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::NewL()" );
       
    82     CEvtMgmtUiLbtAdapter * self = new (ELeave) CEvtMgmtUiLbtAdapter(aObserver);
       
    83     CleanupStack::PushL(self);
       
    84     self->ConstructL();
       
    85     CleanupStack::Pop(self);
       
    86     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::NewL()" );
       
    87     return self;
       
    88     }
       
    89 
       
    90 // ---------------------------------------------------------------------------
       
    91 // CEvtMgmtUiLbtAdapter ::~CEvtMgmtUiLbtAdapter()
       
    92 // ---------------------------------------------------------------------------
       
    93 //
       
    94 CEvtMgmtUiLbtAdapter::~CEvtMgmtUiLbtAdapter()
       
    95     {     
       
    96     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::~CEvtMgmtUiLbtAdapter()" );
       
    97     Cancel();
       
    98     if(iAttrFilter)
       
    99         {
       
   100         delete iAttrFilter;
       
   101         iAttrFilter = NULL;
       
   102         }
       
   103         
       
   104     if(iTrigger)
       
   105         {
       
   106         delete iTrigger;
       
   107         iTrigger = NULL;
       
   108         }
       
   109     	
       
   110     delete iEventChangeObserver;
       
   111     
       
   112     //Close lbt session and server
       
   113     iLbtObserver.Close();
       
   114     iLbt.Close();
       
   115     iLbtServer.Close();
       
   116     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::~CEvtMgmtUiLbtAdapter()" );
       
   117     }
       
   118 
       
   119 // ---------------------------------------------------------------------------
       
   120 // CEvtMgmtUiLbtAdapter::CreateTrigger
       
   121 // ---------------------------------------------------------------------------
       
   122 //
       
   123 void CEvtMgmtUiLbtAdapter::CreateTrigger(const TCoordinate& aCenter,
       
   124         TReal aRadiusInKiloMeters, const TPtrC& aTriggerName,
       
   125         CLbtTriggerEntry::TLbtTriggerState aState )
       
   126     {       
       
   127     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::CreateOrUpdateTrigger()" );
       
   128     
       
   129     TRAPD(err, CreateTriggerL( aCenter, aRadiusInKiloMeters, aTriggerName, 
       
   130                             aState ) );
       
   131     
       
   132     if( err!=KErrNone )
       
   133         iObserver.NotifyLbtError(err, iState);
       
   134     
       
   135     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::CreateOrUpdateTrigger()" );
       
   136     }
       
   137 
       
   138 // ---------------------------------------------------------------------------
       
   139 // CEvtMgmtUiLbtAdapter::CreateTriggerL
       
   140 // ---------------------------------------------------------------------------
       
   141 //
       
   142 void CEvtMgmtUiLbtAdapter::CreateTriggerL(const TCoordinate& aCenter,
       
   143         TReal aRadiusInKiloMeters, const TPtrC& aTriggerName,
       
   144         CLbtTriggerEntry::TLbtTriggerState aState )
       
   145     {        
       
   146     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::CreateTriggerL()");
       
   147     
       
   148     if ( IsActive() )
       
   149         {
       
   150         User::Leave( KErrInUse );            
       
   151         }
       
   152 	
       
   153     //set state of the machine
       
   154     iState = ELbtAdapterCreate;
       
   155     
       
   156     EVTUIDEBUG("========== Trigger Parameter Details ===============" );   
       
   157     CLbtTriggerConditionArea* cond = GetConditionAreaL(aCenter, aRadiusInKiloMeters);
       
   158     CleanupStack::PushL(cond);     
       
   159    
       
   160     /*********************** Debug ******************************************/
       
   161     TBuf<256> debug;
       
   162     debug.Copy( aTriggerName );
       
   163     EVTUIDEBUG1("Trigger Name = %S", &debug );
       
   164     EVTUIDEBUG1("Event State = %d", aState );
       
   165     EVTUIDEBUG1("Radius = %f", aRadiusInKiloMeters*KUnitConversion );
       
   166 	debug.Copy( KTriggerHandlingProcessName() );
       
   167 	EVTUIDEBUG1("Trigger handling process name: %S", &debug );
       
   168 	EVTUIDEBUG1("Trigger handling process SID: %x", KTriggerHandlingProcessSID);
       
   169 	EVTUIDEBUG1("Manager process SID: %x", KManagerProcessSID);
       
   170     /*********************** Debug ******************************************/
       
   171     EVTUIDEBUG("========== Trigger Parameter Details end ===============" );   
       
   172     
       
   173     if(iTrigger)
       
   174        {
       
   175        delete iTrigger;
       
   176        iTrigger = NULL;
       
   177        }
       
   178    
       
   179     // Create the Startup trigegr without the command line.
       
   180     iTrigger = CLbtStartupTrigger::NewL(          
       
   181                             aTriggerName,                           // Trigger name
       
   182                             aState,                                 // Trigger state
       
   183                             CRequestorBase::ERequestorService,      // Requestor type
       
   184                             CRequestorBase::EFormatApplication,     // Requestor format
       
   185                             KMyRequestor,                           // Requestor data
       
   186                             KManagerProcessSID,                     // Manager Uid
       
   187                             cond,                                   // Trigger condition
       
   188                             KTriggerHandlingProcessName,            // Trigger handler app
       
   189                             KTriggerHandlingProcessSID
       
   190                             );          //Trigger state
       
   191    
       
   192   	CleanupStack::Pop( cond ); //ownership of cond is transferred.    
       
   193 	
       
   194     SetActive();
       
   195     iStatus = KRequestPending;
       
   196     
       
   197     EVTUIDEBUG("Before CreateTrigger" );      
       
   198     iLbt.CreateTrigger( *iTrigger, iTriggerId, EFalse, iStatus );            
       
   199     EVTUIDEBUG("After CreateTrigger" );      
       
   200 
       
   201     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::CreateTriggerL()");
       
   202     }
       
   203 
       
   204 // ---------------------------------------------------------------------------
       
   205 // CEvtMgmtUiLbtAdapter::GetConditionAreaL
       
   206 // ---------------------------------------------------------------------------
       
   207 //
       
   208 CLbtTriggerConditionArea* CEvtMgmtUiLbtAdapter::GetConditionAreaL( 
       
   209                 const TCoordinate& aCenter, TReal aRadiusInKiloMeters )
       
   210     {
       
   211     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::GetConditionAreaL()");
       
   212     // Create the Condition Area object depending on the trigger type.
       
   213     CLbtTriggerConditionArea* cond = NULL;
       
   214 
       
   215     if( Math::IsNaN( aCenter.Latitude() ) || Math::IsNaN( aCenter.Longitude() ) )
       
   216         {
       
   217         //Define the triggering area   
       
   218         CLbtGeoCircle * trigArea = CLbtGeoCircle ::NewLC( TCoordinate(TReal(0), TReal(0), TReal(0) ),1*KUnitConversion );
       
   219         //Construct trigger condition
       
   220         cond = CLbtTriggerConditionArea::NewL
       
   221                     (trigArea,CLbtTriggerConditionArea::EFireOnEnter );
       
   222         CleanupStack::Pop( trigArea ); //ownership of trigArea is transferred.
       
   223         }
       
   224     else
       
   225         {
       
   226         //Define the triggering area   
       
   227         CLbtGeoCircle * trigArea = CLbtGeoCircle ::NewLC( aCenter,aRadiusInKiloMeters*KUnitConversion );
       
   228         //Construct trigger condition
       
   229         cond = CLbtTriggerConditionArea::NewL
       
   230                     (trigArea,CLbtTriggerConditionArea::EFireOnEnter );
       
   231         CleanupStack::Pop( trigArea ); //ownership of trigArea is transferred.                
       
   232         }
       
   233     EVTUIDEBUG1("Lat = %f", aCenter.Latitude() );
       
   234     EVTUIDEBUG1("Long = %f", aCenter.Longitude() );
       
   235     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::GetConditionAreaL()");
       
   236     return cond;
       
   237     }
       
   238 
       
   239 // ---------------------------------------------------------------------------
       
   240 // CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL
       
   241 // ---------------------------------------------------------------------------
       
   242 //
       
   243 void CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL( TLbtTriggerId aTriggerId, 
       
   244                                                         TEvtEventId aEventId )
       
   245     {
       
   246     EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL() - %d", aTriggerId );
       
   247     //set commandline argument
       
   248     const TInt KTriggerIdLength(132); 
       
   249     _LIT(KDelimiter, ":");
       
   250     TBuf<KTriggerIdLength> cmdArg;
       
   251     cmdArg.Zero();
       
   252     cmdArg.AppendNumUC(EEvtActionFired);
       
   253     cmdArg.Append(KDelimiter());
       
   254     cmdArg.AppendNumUC(aEventId);
       
   255        
       
   256     CLbtStartupTrigger* trigger = CLbtStartupTrigger::NewLC();
       
   257     trigger->SetId( aTriggerId );
       
   258     trigger->SetCommandLineL( cmdArg );    
       
   259     iState = ELbtAdapterUpdateCmdLineArg;
       
   260     
       
   261 	EVTUIDEBUG1("Before UpdateTriggerL  - %d", aTriggerId );
       
   262     iLbt.UpdateTriggerL( *trigger, CLbtTriggerEntry::EAttributeStartUpCommandLine, ELbtFalse );  
       
   263 	EVTUIDEBUG1("After UpdateTriggerL  - %d", aTriggerId ); 
       
   264     
       
   265     CleanupStack::PopAndDestroy(trigger);
       
   266     EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::UpdateCmdLineArgL() - %d", aTriggerId );
       
   267     }
       
   268 
       
   269 // ---------------------------------------------------------------------------
       
   270 // CEvtMgmtUiLbtAdapter::UpdateTriggerL
       
   271 // ---------------------------------------------------------------------------
       
   272 //
       
   273 void CEvtMgmtUiLbtAdapter::UpdateTriggerL( TLbtTriggerId aTriggerId,
       
   274         const TCoordinate& aCenter, TReal aRadiusInKiloMeters,
       
   275         CLbtTriggerEntry::TLbtTriggerState aState )
       
   276     {
       
   277     EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::UpdateTriggerL() - %d", aTriggerId )
       
   278     EVTUIDEBUG1("Event State = %d", aState );
       
   279     
       
   280     if ( IsActive() )
       
   281        {    
       
   282        User::Leave( KErrInUse );            
       
   283        }
       
   284     
       
   285     //Set state of the machine
       
   286     iState = ELbtAdapterUpdate;   
       
   287 
       
   288     // Create the Condition Area object depending on the trigger type.
       
   289     CLbtTriggerConditionArea* cond = GetConditionAreaL(aCenter, aRadiusInKiloMeters );
       
   290     CleanupStack::PushL(cond); 
       
   291        
       
   292     //create startup trigger object
       
   293     if(iTrigger)
       
   294        {
       
   295        delete iTrigger;
       
   296        iTrigger = NULL;
       
   297        }
       
   298     iTrigger = CLbtStartupTrigger::NewL();
       
   299     iTrigger->SetId( aTriggerId );
       
   300     iTrigger->SetCondition(cond);    
       
   301     CleanupStack::Pop(cond);    //ownership is transferred to trigger.
       
   302     iTrigger->SetState(aState);
       
   303     
       
   304     // Create the Trigger update attributes mask. 
       
   305     TLbtTriggerAttributeFieldsMask fieldsMask;
       
   306     fieldsMask = CLbtTriggerEntry::EAttributeState | CLbtTriggerEntry::EAttributeCondition;
       
   307     
       
   308     SetActive();
       
   309     iStatus = KRequestPending;
       
   310     
       
   311     EVTUIDEBUG1("Before UpdateTriggerL  - %d", aTriggerId );
       
   312     iLbt.UpdateTrigger( *iTrigger, fieldsMask, ELbtFalse, iStatus);  
       
   313     EVTUIDEBUG1("After UpdateTriggerL  - %d", aTriggerId ); 
       
   314     
       
   315     EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::UpdateTriggerL() - %d", aTriggerId );
       
   316     }
       
   317 
       
   318 // ---------------------------------------------------------------------------
       
   319 // CEvtMgmtUiLbtAdapter::SetTriggerStateL
       
   320 // ---------------------------------------------------------------------------
       
   321 //
       
   322 void CEvtMgmtUiLbtAdapter::SetTriggerStateL( TLbtTriggerId  aTriggerId,
       
   323 									CLbtTriggerEntry::TLbtTriggerState aState )  
       
   324     {
       
   325     EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::SetTriggerStateL() - %d", aTriggerId );
       
   326     EVTUIDEBUG2("SetTriggerState for Triggerid =%d eventstatus = %d ", aTriggerId, aState);
       
   327     
       
   328     //Set state of the machine
       
   329     iState = ELbtAdapterSetTriggerState;
       
   330     iTriggerId = aTriggerId;
       
   331     
       
   332 	EVTUIDEBUG1("Before SetTriggerStateL  - %d", aTriggerId );
       
   333     iLbt.SetTriggerStateL(aTriggerId, aState, ELbtFalse );
       
   334 	EVTUIDEBUG1("After SetTriggerStateL  - %d", aTriggerId );
       
   335 	
       
   336     EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::SetTriggerStateL() - %d", aTriggerId );
       
   337     }
       
   338 
       
   339 // ---------------------------------------------------------------------------
       
   340 // CEvtMgmtUiLbtAdapter::SetTriggersStateL
       
   341 // ---------------------------------------------------------------------------
       
   342 //
       
   343 void CEvtMgmtUiLbtAdapter::SetTriggersStateL( const RArray<TLbtTriggerId>& aTriggerIdList,
       
   344                                     CLbtTriggerEntry::TLbtTriggerState aState )  
       
   345     {
       
   346     EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::SetTriggersStateL() Count - %d", aTriggerIdList.Count() );
       
   347     
       
   348     if ( IsActive() )
       
   349        {    
       
   350        User::Leave( KErrInUse );            
       
   351        }
       
   352     
       
   353     //Set state of the machine
       
   354     iState = ELbtAdapterSetTriggersState;  
       
   355     
       
   356     if( iAttrFilter )
       
   357     	{
       
   358     	delete iAttrFilter;
       
   359     	iAttrFilter = NULL;
       
   360     	}
       
   361         
       
   362     // Create an attribute filter to include all the trigger ids
       
   363     iAttrFilter = CLbtTriggerFilterByAttribute::NewL();
       
   364     
       
   365     for( TInt index=0; index<aTriggerIdList.Count(); index++ )
       
   366         {
       
   367         iAttrFilter->AddTriggerIdL(aTriggerIdList[index]);
       
   368         }
       
   369             
       
   370     SetActive();
       
   371     iStatus = KRequestPending;
       
   372     iLbt.SetTriggersState( iStatus, aState, ELbtFalse, iAttrFilter );
       
   373     
       
   374     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::SetTriggersState()");
       
   375     }
       
   376 
       
   377 // ---------------------------------------------------------------------------
       
   378 // CEvtMgmtUiLbtAdapter::DeleteTriggerL
       
   379 // ---------------------------------------------------------------------------
       
   380 //
       
   381 void CEvtMgmtUiLbtAdapter::DeleteTriggerL( TLbtTriggerId  aTriggerId )  
       
   382     {
       
   383     EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::DeleteTriggerL() TriggerID = %d" , aTriggerId);
       
   384     EVTUIDEBUG2("SetTriggerState for Triggerid =%d eventstatus = %d ", aTriggerId, iState);
       
   385       
       
   386     //set state 
       
   387     iState = ELbtAdapterDelete;
       
   388     
       
   389     //Set it to member variable so that it can be used in RunL to delete trigger
       
   390     iTriggerId = aTriggerId;
       
   391     
       
   392 	EVTUIDEBUG1("Before DeleteTriggerL  - %d", aTriggerId );
       
   393     iLbt.DeleteTriggerL( iTriggerId );
       
   394 	EVTUIDEBUG1("After DeleteTriggerL  - %d", aTriggerId );
       
   395     
       
   396     EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::DeleteTriggerL() TriggerID = %d" , aTriggerId);
       
   397     }
       
   398 
       
   399 // ---------------------------------------------------------------------------
       
   400 // CEvtMgmtUiLbtAdapter::DeleteTriggersL
       
   401 // ---------------------------------------------------------------------------
       
   402 //
       
   403 void CEvtMgmtUiLbtAdapter::DeleteTriggersL( const RArray<TLbtTriggerId>& aTriggerIdList )  
       
   404     {
       
   405     EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::DeleteTriggersL() Count - %d", aTriggerIdList.Count() );
       
   406     
       
   407     if ( IsActive() )
       
   408         {
       
   409         User::Leave( KErrInUse );            
       
   410         }
       
   411     iState = ELbtAdapterDeleteTriggers;
       
   412     SetActive();
       
   413     iStatus = KRequestPending;
       
   414         
       
   415     iLbt.DeleteTriggers( aTriggerIdList, iStatus );
       
   416     
       
   417     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::DeleteTriggersL()");
       
   418     }
       
   419 
       
   420 // ---------------------------------------------------------------------------
       
   421 // CEvtMgmtUiLbtAdapter::GetTriggerStateL
       
   422 // ---------------------------------------------------------------------------
       
   423 //
       
   424 CLbtTriggerEntry::TLbtTriggerState CEvtMgmtUiLbtAdapter::GetTriggerStateL( TLbtTriggerId  aTriggerId )
       
   425     {
       
   426     EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::GetTriggerStateL = %d ", aTriggerId);
       
   427     CLbtTriggerEntry::TLbtTriggerState state = CLbtTriggerEntry::EStateDisabled;
       
   428     
       
   429 	EVTUIDEBUG1("Before GetTriggerLC  - %d", aTriggerId );
       
   430     CLbtTriggerInfo * info = iLbt.GetTriggerLC( aTriggerId );
       
   431 	EVTUIDEBUG1("After GetTriggerLC  - %d", aTriggerId );
       
   432     
       
   433     if(info)
       
   434         {
       
   435         CLbtTriggerEntry* entry = info->TriggerEntry();
       
   436         state = entry->State();
       
   437         CleanupStack::PopAndDestroy(info);
       
   438         }
       
   439     
       
   440     EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::GetTriggerStateL = %d ", aTriggerId);
       
   441     
       
   442     return state;
       
   443     }
       
   444 
       
   445 // ---------------------------------------------------------------------------
       
   446 // CEvtMgmtUiLbtAdapter::CancelRequest()
       
   447 // ---------------------------------------------------------------------------
       
   448 //
       
   449 void CEvtMgmtUiLbtAdapter::CancelRequest()
       
   450     {     
       
   451     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::CancelRequest()" );
       
   452     Cancel();
       
   453     if(iStatus.Int()==KErrCancel)
       
   454         {       
       
   455 		iObserver.NotifyLbtError(KErrCancel, iState);
       
   456 		}
       
   457     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::CancelRequest()" );
       
   458     }
       
   459 
       
   460 // ---------------------------------------------------------------------------
       
   461 // CEvtMgmtUiLbtAdapter::RetrieveLocationL
       
   462 // ---------------------------------------------------------------------------
       
   463 //
       
   464 void CEvtMgmtUiLbtAdapter::RetrieveLocationL( TLbtTriggerId aTriggerId, TCoordinate& aCenter )
       
   465     {
       
   466     EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::RetrieveLocationL() TriggerId = %d ", aTriggerId );   
       
   467     
       
   468 	EVTUIDEBUG1("Before GetTriggerLC  - %d", aTriggerId );
       
   469     CLbtTriggerInfo * info = iLbt.GetTriggerLC( aTriggerId );
       
   470 	EVTUIDEBUG1("After GetTriggerLC  - %d", aTriggerId );
       
   471     
       
   472     if(info)
       
   473            {
       
   474            CLbtTriggerEntry* entry = info->TriggerEntry();
       
   475            CLbtTriggerConditionArea* triggArea =  static_cast< CLbtTriggerConditionArea*>( entry->GetCondition());
       
   476            CLbtGeoAreaBase* triggGeoArea = static_cast< CLbtGeoAreaBase*>( triggArea->TriggerArea());
       
   477            if( triggGeoArea->Type() == CLbtGeoAreaBase::ECircle)
       
   478                {
       
   479                CLbtGeoCircle* loc = static_cast<CLbtGeoCircle*>( triggArea->TriggerArea() );          
       
   480                aCenter = loc->Center();
       
   481                EVTUIDEBUG1("GetTriggerLC: Latitude = %f", aCenter.Latitude() );
       
   482                EVTUIDEBUG1("GetTriggerLC: Longitude = %f", aCenter.Longitude() );
       
   483                }
       
   484            else
       
   485                {
       
   486                User::Leave(KErrNotSupported);
       
   487                }
       
   488     	   CleanupStack::PopAndDestroy(); //info
       
   489            }   
       
   490     
       
   491     EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::RetrieveLocationL() TriggerId = %d ", aTriggerId );  
       
   492     }
       
   493 
       
   494 // ---------------------------------------------------------------------------
       
   495 // CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL
       
   496 // ---------------------------------------------------------------------------
       
   497 //
       
   498 void CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL( TLbtTriggerId aTriggerId, TReal32& aDistance )
       
   499     {
       
   500     EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL() TriggerId = %d ", aTriggerId );   
       
   501     
       
   502 	EVTUIDEBUG1("Before GetTriggerLC  - %d", aTriggerId );
       
   503     CLbtTriggerInfo * info = iLbt.GetTriggerLC( aTriggerId );
       
   504 	EVTUIDEBUG1("After GetTriggerLC  - %d", aTriggerId );
       
   505     
       
   506     if(info)
       
   507 		{
       
   508         CLbtTriggerEntry* entry = info->TriggerEntry();
       
   509         CLbtTriggerConditionArea* triggArea =  static_cast< CLbtTriggerConditionArea*>( entry->GetCondition());
       
   510         CLbtGeoAreaBase* triggGeoArea = static_cast< CLbtGeoAreaBase*>( triggArea->TriggerArea());
       
   511         if( triggGeoArea->Type() == CLbtGeoAreaBase::ECircle)
       
   512             {
       
   513             TLbtTriggerDynamicInfo* dynInfo = info->DynInfo();
       
   514             CLbtGeoCircle* circle = static_cast<CLbtGeoCircle*> (triggGeoArea);
       
   515             TCoordinate cord = circle->Center();
       
   516             cord.Distance(dynInfo->iFiredLocality, aDistance);
       
   517             aDistance = aDistance - circle->Radius();
       
   518             aDistance = Abs(aDistance);
       
   519             }
       
   520         EVTUIDEBUG1( "Fired Trigger Accuracy in Distance = %f", aDistance );
       
   521         CleanupStack::PopAndDestroy(); //info
       
   522 		}   
       
   523     
       
   524     EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::GetFiredTriggerAccuracyL() TriggerId = %d ", aTriggerId );
       
   525     }
       
   526 
       
   527 // ---------------------------------------------------------------------------
       
   528 // CEvtMgmtUiLbtAdapter::RunError
       
   529 // ---------------------------------------------------------------------------
       
   530 //
       
   531 TInt CEvtMgmtUiLbtAdapter::RunError( TInt aError )
       
   532     {
       
   533     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::RunError()" );
       
   534     if( aError != KErrNone )
       
   535         {
       
   536         //if error, notify it to the engine.      
       
   537         EVTUIDEBUG1("CEvtMgmtUiLbtAdapter RunError error = %d", aError );
       
   538         iObserver.NotifyLbtError( aError, iState);
       
   539         }
       
   540     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::RunError()" );
       
   541     return KErrNone;
       
   542     }
       
   543 
       
   544 // ---------------------------------------------------------------------------
       
   545 // CEvtMgmtUiLbtAdapter ::RunL()
       
   546 // Inherited from CActive
       
   547 // ---------------------------------------------------------------------------
       
   548 //
       
   549 void CEvtMgmtUiLbtAdapter::RunL() 
       
   550     {
       
   551     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::RunL()" );
       
   552         
       
   553     if(iStatus.Int()!=KErrNone)
       
   554         {       
       
   555         EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::RunL() error =%d", iStatus.Int());
       
   556         User::Leave( iStatus.Int() );
       
   557         return;
       
   558         }
       
   559     
       
   560     EVTUIDEBUG("LbtAdapter error = 0" );
       
   561     
       
   562     switch(iState)
       
   563         {
       
   564         case ELbtAdapterCreate: 
       
   565             {
       
   566 			 iState = ELbtAdapterCreate;
       
   567 			 
       
   568             //delete trigger object when trigger is successfuly created
       
   569             if(iTrigger)            
       
   570                 {
       
   571         		EVTUIDEBUG("Deleting trigger entry after Create" );
       
   572                 delete iTrigger;
       
   573                 iTrigger = NULL;
       
   574                 }
       
   575             break;
       
   576             }
       
   577         case ELbtAdapterUpdate:
       
   578             {			 
       
   579             //delete trigger object when trigger is successfuly updated
       
   580             if(iTrigger)            
       
   581                 {
       
   582         		EVTUIDEBUG("Deleting trigger entry after Update" );
       
   583                 delete iTrigger;
       
   584                 iTrigger = NULL;
       
   585                 }
       
   586             break;
       
   587             }
       
   588         case ELbtAdapterDeleteTriggers:
       
   589             {
       
   590             EVTUIDEBUG("Triggers are deleted successfully");
       
   591             }
       
   592             break;
       
   593         case ELbtAdapterSetTriggersState:
       
   594             {
       
   595 		    if(iAttrFilter)
       
   596 		        {
       
   597 		        delete iAttrFilter;
       
   598 		        iAttrFilter = NULL;
       
   599 		        }
       
   600             EVTUIDEBUG("State of triggers are changed successfully");
       
   601             break;
       
   602             }
       
   603         default:
       
   604             { 
       
   605             break;
       
   606             }
       
   607         }
       
   608     //Notify engine about lbt changes
       
   609     iObserver.NotifyLbtChangeL(iTriggerId, iState);               
       
   610     
       
   611     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::RunL()" );
       
   612     }
       
   613 
       
   614 // ---------------------------------------------------------------------------
       
   615 // CEvtMgmtUiLbtAdapter ::DoCancel()
       
   616 // Inherited from CActive
       
   617 // ---------------------------------------------------------------------------
       
   618 //
       
   619 void CEvtMgmtUiLbtAdapter::DoCancel()
       
   620     {    
       
   621     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::DoCancel()" );
       
   622     iLbt.CancelAll();
       
   623     //iObserver.NotifyLbtError(KErrCancel, iState);
       
   624     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::DoCancel()" );
       
   625     }
       
   626 
       
   627 // ---------------------------------------------------------------------------
       
   628 // CEvtMgmtUiLbtAdapter::GetTriggerListL
       
   629 // ---------------------------------------------------------------------------
       
   630 //
       
   631 void CEvtMgmtUiLbtAdapter::GetTriggerListL( RArray<TLbtTriggerId>& aTriggerList,
       
   632 								CLbtTriggerEntry::TLbtTriggerState aState )
       
   633     {
       
   634     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::GetTriggerListL()" );
       
   635 	CLbtListTriggerOptions *listOptions = CLbtListTriggerOptions::NewL();
       
   636     CleanupStack::PushL(listOptions);  
       
   637       
       
   638 	CLbtTriggerFilterByAttribute* filter = CLbtTriggerFilterByAttribute::NewLC();
       
   639 	
       
   640     // List only valid triggers and whose state is aState.
       
   641 	filter->AddTriggerStateL( aState );
       
   642     filter->AddTriggerValidityL( TLbtTriggerDynamicInfo::EValid );
       
   643     
       
   644 	listOptions->SetFilter( filter );
       
   645 	
       
   646 	EVTUIDEBUG("Before ListTriggerIdsL");
       
   647 	iLbt.ListTriggerIdsL( aTriggerList, listOptions );
       
   648 	EVTUIDEBUG("After ListTriggerIdsL");
       
   649 
       
   650     CleanupStack::PopAndDestroy(2);// filter, listOptions
       
   651     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::GetTriggerListL()" );
       
   652     }
       
   653 
       
   654 // ---------------------------------------------------------------------------
       
   655 // CEvtMgmtUiLbtAdapter::GetTriggerListL
       
   656 // ---------------------------------------------------------------------------
       
   657 //
       
   658 void CEvtMgmtUiLbtAdapter::GetTriggerListL( RArray<TLbtTriggerId>& aTriggerList,
       
   659                 TLbtTriggerDynamicInfo::TLbtTriggerValidity aValid )
       
   660     {
       
   661     EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::GetTriggerListL()" );
       
   662     CLbtListTriggerOptions *listOptions = CLbtListTriggerOptions::NewL();
       
   663     CleanupStack::PushL(listOptions);  
       
   664       
       
   665     CLbtTriggerFilterByAttribute* filter = CLbtTriggerFilterByAttribute::NewLC();
       
   666     
       
   667     // List only triggers of status aValid
       
   668     filter->AddTriggerValidityL( aValid );
       
   669     
       
   670     listOptions->SetFilter( filter );
       
   671     
       
   672     EVTUIDEBUG("Before ListTriggerIdsL");
       
   673     iLbt.ListTriggerIdsL( aTriggerList, listOptions );
       
   674     EVTUIDEBUG("After ListTriggerIdsL");
       
   675 
       
   676     CleanupStack::PopAndDestroy(2);// filter, listOptions
       
   677     EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::GetTriggerListL()" );
       
   678     }
       
   679 
       
   680 // ---------------------------------------------------------------------------
       
   681 // CEvtMgmtUiLbtAdapter::TriggerChangedL
       
   682 // ---------------------------------------------------------------------------
       
   683 //
       
   684 void CEvtMgmtUiLbtAdapter::TriggerChangedL(
       
   685 							const TLbtTriggerChangeEvent &aEvent)
       
   686 	{
       
   687 	EVTUIDEBUG("+ CEvtMgmtUiLbtAdapter::TriggerChangedL()" );
       
   688 	switch( aEvent.iEventType )
       
   689 		{
       
   690 		case ELbtTriggerChangeEventMultiple:
       
   691 		iObserver.NotifyTriggerChangeL(aEvent.iTriggerId, MEvtMgmtUiLbtObserver::ETriggerMultipleModified);
       
   692 		break;
       
   693 		case ELbtTriggerChangeEventDeleted:
       
   694 		iObserver.NotifyTriggerChangeL(aEvent.iTriggerId, MEvtMgmtUiLbtObserver::ETriggerDeleted);
       
   695 		break;
       
   696 		case ELbtTriggerChangeEventUpdated:
       
   697 		iObserver.NotifyTriggerChangeL(aEvent.iTriggerId, MEvtMgmtUiLbtObserver::ETriggerModified);
       
   698 		break;
       
   699 		default:
       
   700 		break;
       
   701 		}
       
   702 	EVTUIDEBUG("- CEvtMgmtUiLbtAdapter::TriggerChangedL()" );
       
   703 	}
       
   704 
       
   705 // ---------------------------------------------------------------------------
       
   706 // CEvtMgmtUiLbtAdapter::GetFiredPositionL
       
   707 // ---------------------------------------------------------------------------
       
   708 //
       
   709 TBool CEvtMgmtUiLbtAdapter::GetFiredPositionL( TPosition& aPosition,
       
   710 											const TLbtTriggerId aTriggerId )
       
   711 	{
       
   712 	EVTUIDEBUG1("+ CEvtMgmtUiLbtAdapter::GetFiredPositionL() - %d", aTriggerId );
       
   713 	RArray<TLbtTriggerFireInfo> aTriggerInfoList;
       
   714 	
       
   715 	EVTUIDEBUG1("Before GetFiredTriggersL  - %d", aTriggerId );
       
   716 	iLbt.GetFiredTriggersL( aTriggerInfoList );
       
   717 	EVTUIDEBUG1("After GetFiredTriggersL  - %d", aTriggerId );
       
   718 	
       
   719 	TInt count = aTriggerInfoList.Count();
       
   720 	TBool found(EFalse);
       
   721 	
       
   722 	for( TInt i=0; i<count; i++ )
       
   723 		{
       
   724 		if ( aTriggerInfoList[i].iTriggerId == aTriggerId )
       
   725 			{
       
   726 			if(aTriggerInfoList[i].iAreaType == CLbtGeoAreaBase::ECircle)
       
   727 				{ 
       
   728 				found = ETrue;
       
   729 				aTriggerInfoList[i].iFiredPositionInfo.GetPosition( aPosition );
       
   730 				}
       
   731 			}
       
   732 		}
       
   733 	aTriggerInfoList.Close();
       
   734 	EVTUIDEBUG1("- CEvtMgmtUiLbtAdapter::GetFiredPositionL() - %d", aTriggerId );
       
   735 	return found;
       
   736 	}
       
   737 //end of file