locationtriggering/lbtmgmtui/src/lbtmgmtlbtadapter.cpp
changeset 0 667063e416a2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationtriggering/lbtmgmtui/src/lbtmgmtlbtadapter.cpp	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,340 @@
+/*
+* 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:  Location Triggering Management's Lbt adapter
+*
+*/
+
+
+// User Include
+#include "lbtmgmtlbtadapter.h"
+#include "lbtmgmtadapterobserver.h"
+#include "lbtmgmtdebug.h"
+#include <lbtstatuspskeys.h>
+#include <lbttriggerfilterbyattribute.h> 
+#include <lbttriggerchangeeventnotifier.h>
+
+// System Include
+#include <lbttriggeringsystemmanagementsettings.h> 
+#include <lbtcommon.h>
+#include <e32property.h>
+
+// Constant Definition
+
+// ========================= MEMBER FUNCTIONS ================================
+
+
+// ---------------------------------------------------------------------------
+// CLbtMgmtLbtAdapter::CLbtMgmtLbtAdapter
+// Overloaded Constructor
+//
+// ---------------------------------------------------------------------------
+//  
+CLbtMgmtLbtAdapter::CLbtMgmtLbtAdapter(  
+                                MLbtMgmtAdapterObserver& aAdapterObsrv )
+    :CActive(EPriorityStandard),
+    iObserver(aAdapterObsrv)
+    {
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtMgmtLbtAdapter::~CLbtMgmtLbtAdapter
+// Destructor
+//
+// ---------------------------------------------------------------------------
+//
+CLbtMgmtLbtAdapter::~CLbtMgmtLbtAdapter()
+    {
+    Cancel();
+    delete iEventChangeObserver;
+    iLbtMgrObserver.Close();
+    iLbtMgr.Close();
+    iLbtServ.Close();
+    }
+    
+// ---------------------------------------------------------------------------
+// CLbtMgmtLbtAdapter* CLbtMgmtLbtAdapter::NewL
+// Creates new Trigger Status adapter
+//
+// @param  aAdapterObsrv                        Observer to the Settings adapter
+// @return CLbtMgmtLbtAdapter& Reference to the Trigger Status adapter
+// ---------------------------------------------------------------------------
+//    
+CLbtMgmtLbtAdapter* CLbtMgmtLbtAdapter::NewL( 
+                            MLbtMgmtAdapterObserver& aAdapterObsrv )
+    {   
+    CLbtMgmtLbtAdapter* self = 
+                        CLbtMgmtLbtAdapter::NewLC( aAdapterObsrv );
+    CleanupStack::Pop(self);
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtMgmtLbtAdapter* CLbtMgmtLbtAdapter::NewLC
+// Creates new Trigger Status adapter. Leaves the object on the clean-up
+// stack
+//
+// @param  aAdapterObsrv                        Observer to the Settings adapter
+// @return CLbtMgmtLbtAdapter& Reference to the Trigger Status adapter
+// ---------------------------------------------------------------------------
+// 
+CLbtMgmtLbtAdapter* CLbtMgmtLbtAdapter::NewLC( 
+                            MLbtMgmtAdapterObserver& aAdapterObsrv )
+    {   
+    CLbtMgmtLbtAdapter* self = 
+                        new(ELeave) CLbtMgmtLbtAdapter( aAdapterObsrv );
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+    
+// ---------------------------------------------------------------------------
+// void CLbtMgmtLbtAdapter::ConstructL
+// Second Phase Constructor
+//
+// ---------------------------------------------------------------------------
+//
+void CLbtMgmtLbtAdapter::ConstructL()
+    {  
+    
+    // Create the Central repository object for manipulating Avkon Central
+    // repository for Co-ordinate display settings
+    User::LeaveIfError( iLbtServ.Connect() );
+	User::LeaveIfError( iLbtMgr.Open(iLbtServ) );
+	User::LeaveIfError( iLbtMgrObserver.Open(iLbtServ) );
+    
+	CActiveScheduler::Add( this );
+    StartNotification();
+    
+    iEventChangeObserver = CLbtTriggerChangeEventNotifier::NewL( iLbtMgrObserver, *this );
+    iEventChangeObserver->Start();
+    
+    iLbtMgr.GetTriggeringSystemSettingsL( iTriggerSettings );
+    GetTotalActiveTriggersL();
+    }
+    
+// ---------------------------------------------------------------------------
+// CLbtMgmtLbtAdapter::TCordDisSetListPosition 
+//                CLbtMgmtLbtAdapter::GetCurrentDisplayFormatL
+// Returns the position of the Co-ordinate display format settings value.
+//
+// @return TCordDisSetListPosition Current postion of the Co-ordinate display
+//                                 settings value.
+// ---------------------------------------------------------------------------
+//
+CLbtMgmtLbtAdapter::TTriggeringStatus 
+                CLbtMgmtLbtAdapter::GetCurrentTriggeringStatusL()
+    {	
+    LBTMGMTUIDEBUG("+ CLbtMgmtLbtAdapter::GetCurrentTriggeringStatusL()");
+    CLbtMgmtLbtAdapter::TTriggeringStatus status = CLbtMgmtLbtAdapter::EOff;
+    
+    switch( iTriggerSettings.TriggeringMechanismState() )
+    	{
+    	case ETriggeringMechanismOn:
+    		status = CLbtMgmtLbtAdapter::EOn;
+    		break;
+    	case ETriggeringMechanismOff:
+    		status = CLbtMgmtLbtAdapter::EOff;
+    		break;
+    	default :
+    		break;
+    	}
+    LBTMGMTUIDEBUG1("- CLbtMgmtLbtAdapter::GetCurrentTriggeringStatusL() - %d", status);
+    
+    return status;    
+    }
+
+// --------------------------------------------------------------------------
+// void CLbtMgmtLbtAdapter::SetCurrentDisplayFormatL
+// Sets the value of the Co-ordinate display format settings based on the
+// display position.
+//
+// @param aSettingsPos  Position of the new Co-ordinate display settings value
+// ---------------------------------------------------------------------------
+//
+void CLbtMgmtLbtAdapter::SetCurrentTriggeringStatusL( 
+        CLbtMgmtLbtAdapter::TTriggeringStatus aSettingsValue )
+   {	
+   LBTMGMTUIDEBUG1("+ CLbtMgmtLbtAdapter::SetCurrentTriggeringStatusL() - %d", aSettingsValue);
+    switch( aSettingsValue )
+    	{
+    	case CLbtMgmtLbtAdapter::EOn:
+    		iTriggerSettings.SetTriggeringMechanismState(ETriggeringMechanismOn);
+		    LBTMGMTUIDEBUG("Before SetTriggeringSystemSettingsL"); 
+			iLbtMgr.SetTriggeringSystemSettingsL(iTriggerSettings,ETriggeringMechanismState); 
+    	    LBTMGMTUIDEBUG("After SetTriggeringSystemSettingsL"); 
+    		break;
+    	case CLbtMgmtLbtAdapter::EOff:
+    		iTriggerSettings.SetTriggeringMechanismState(ETriggeringMechanismOff);
+		    LBTMGMTUIDEBUG("Before SetTriggeringSystemSettingsL"); 
+			iLbtMgr.SetTriggeringSystemSettingsL(iTriggerSettings,ETriggeringMechanismState); 
+    	    LBTMGMTUIDEBUG("After SetTriggeringSystemSettingsL"); 
+    		break;
+    	default :
+    		break;
+    	}	
+    LBTMGMTUIDEBUG("- CLbtMgmtLbtAdapter::SetCurrentTriggeringStatusL()");	
+   }
+    
+// --------------------------------------------------------------------------
+// void CLbtMgmtLbtAdapter::RunL
+// Inherited from CActive
+//
+// ---------------------------------------------------------------------------
+//
+void CLbtMgmtLbtAdapter::RunL()
+    {
+    LBTMGMTUIDEBUG("+ CLbtMgmtLbtAdapter::RunL() - Settings Changed");  
+    // Issue Notification
+    iObserver.HandleSettingsChangeL();
+    
+    // Schedule for listening to change events again
+    StartNotification();
+
+    LBTMGMTUIDEBUG("- CLbtMgmtLbtAdapter::RunL()");  
+    }
+
+// --------------------------------------------------------------------------
+// void CLbtMgmtLbtAdapter::DoCancel
+// Inherited from CActive
+//
+// ---------------------------------------------------------------------------
+//
+void CLbtMgmtLbtAdapter::DoCancel()
+    {
+    // Cancel the outstanding CR notification request
+    iLbtMgr.CancelNotifyTriggeringSystemSettingChange();
+    }
+    
+// --------------------------------------------------------------------------
+// void CLbtMgmtLbtAdapter::StartNotification
+// Start notification from the Central repository server for any changes in the
+// Co-ordinate display format key value
+//
+// ---------------------------------------------------------------------------
+//
+void CLbtMgmtLbtAdapter::StartNotification()
+    {
+    if( !IsActive())
+        {
+        iStatus = KRequestPending;
+        // Request for notification        
+        iLbtMgr.NotifyTriggeringSystemSettingChange(iTriggerSettings, iStatus);
+        SetActive(); 
+        }  
+    }
+
+// ---------------------------------------------------------------------------
+// void CLbtMgmtPluginEngine::ShowInfoDialog
+// It will return total active triggers
+// ---------------------------------------------------------------------------
+//
+TInt CLbtMgmtLbtAdapter::ActiveTriggers()
+    {
+    return iTotalActiveTriggers;
+    }
+
+// --------------------------------------------------------------------------
+// TInt CLbtMgmtLbtAdapter::GetTotalActiveTriggersL()
+// Gets all active triggers from Location Triggering Server. 
+// ---------------------------------------------------------------------------
+//
+void CLbtMgmtLbtAdapter::GetTotalActiveTriggersL()
+    {
+    LBTMGMTUIDEBUG("+ CLbtMgmtLbtAdapter::GetTotalActiveTriggersL()");  
+    RArray<TLbtTriggerId> triggerList;
+    
+    //Construct list options
+    //XXX: should use NewLC() when it is available
+    CLbtListTriggerOptions* listOptions = CLbtListTriggerOptions::NewL();
+    CleanupStack::PushL(listOptions);
+        
+    //Construct an attribute filter
+    CLbtTriggerFilterByAttribute* attribFilter = CLbtTriggerFilterByAttribute::NewLC();
+
+    //Add trigger state to the filter. List only enabled triggers.
+    attribFilter->AddTriggerStateL( CLbtTriggerEntry::EStateEnabled );
+    
+    //Add trigger validity to the filter. List only valid triggers.
+    attribFilter->AddTriggerValidityL( TLbtTriggerDynamicInfo::EValid );
+    
+    listOptions->SetFilter(attribFilter);
+    
+    //List triggers
+
+   LBTMGMTUIDEBUG("Before ListTriggerIdsL");  
+   TRAPD( err, iLbtMgr.ListTriggerIdsL(triggerList, listOptions ) );
+   LBTMGMTUIDEBUG("After ListTriggerIdsL"); 
+   
+   if( err == KErrNone )
+       {
+       iTotalActiveTriggers = triggerList.Count();
+       }
+    
+    //Cleanup   
+    triggerList.Close();
+    CleanupStack::PopAndDestroy(2);//attribFilter, listOptions
+
+    LBTMGMTUIDEBUG("- CLbtMgmtLbtAdapter::GetTotalActiveTriggersL()");  
+    }
+
+// --------------------------------------------------------------------------
+// TInt CLbtMgmtLbtAdapter::DeleteActiveTriggersL()
+// Deletes all active triggers from Location Triggering Server. 
+// ---------------------------------------------------------------------------
+//
+void CLbtMgmtLbtAdapter::DeleteActiveTriggersL()
+    {
+    LBTMGMTUIDEBUG("+ CLbtMgmtLbtAdapter::DeleteActiveTriggersL()");  
+    //Construct an attribute filter
+    CLbtTriggerFilterByAttribute* attribFilter = CLbtTriggerFilterByAttribute::NewLC();
+
+    //Add trigger state to the filter. List only enabled triggers.
+    attribFilter->AddTriggerStateL( CLbtTriggerEntry::EStateEnabled );
+    
+    //Add trigger validity to the filter. List only valid triggers.
+    attribFilter->AddTriggerValidityL( TLbtTriggerDynamicInfo::EValid );   
+
+    LBTMGMTUIDEBUG("Before DeleteTriggersL"); 
+    iLbtMgr.DeleteTriggersL( attribFilter );
+    LBTMGMTUIDEBUG("After DeleteTriggersL"); 
+    
+    CleanupStack::PopAndDestroy( attribFilter );
+    LBTMGMTUIDEBUG("- CLbtMgmtLbtAdapter::DeleteActiveTriggersL()");  
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtMgmtLbtAdapter::TriggerChangedL()
+// Gets the notification on Change in Trigger.
+// ---------------------------------------------------------------------------
+//
+void CLbtMgmtLbtAdapter::TriggerChangedL(
+							const TLbtTriggerChangeEvent &aEvent)
+	{
+    LBTMGMTUIDEBUG("+ CLbtMgmtLbtAdapter::TriggerChangedL()"); 
+	switch( aEvent.iEventType )
+		{
+		case ELbtTriggerChangeEventMultiple:
+		case ELbtTriggerChangeEventDeleted:
+		case ELbtTriggerChangeEventCreated:
+		case ELbtTriggerChangeEventUpdated:
+			GetTotalActiveTriggersL();
+		    // Issue Notification
+		    iObserver.HandleSettingsChangeL();
+			break;
+		default:
+			break;
+		}
+    LBTMGMTUIDEBUG("- CLbtMgmtLbtAdapter::TriggerChangedL()"); 
+	}
+