locationtriggering/ltcontainer/src/lbtupdateasyncoperation.cpp
changeset 0 667063e416a2
child 20 2b4ea9893b66
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationtriggering/ltcontainer/src/lbtupdateasyncoperation.cpp	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,320 @@
+/*
+* 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:  This file defines the container trigger entry class
+*
+*/
+
+
+#include <lbttriggerdynamicinfo.h>
+#include <lbtsessiontrigger.h>
+#include <lbtstartuptrigger.h>
+#include <lbttriggerentry.h>
+#include <lbttriggerconditionbase.h>
+#include <lbttriggerconditionarea.h>
+#include <lbtgeoareabase.h>
+#include <lbtgeocircle.h>
+#include <lbtgeorect.h>
+#include "lbtcontainertriggerentry.h"
+#include "lbtupdateasyncoperation.h"
+#include "lbtsecuritypolicy.h"
+#include "lbtlogger.h"
+
+// ======== MEMBER FUNCTIONS ========
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::NewL(
+//    CLbtTriggerEntry* aEntry,
+//    TLbtTriggerDynamicInfo* aDynInfo,
+//    TLbtDerivedTriggerInfo* aDerivedInfo)
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+CLbtUpdateAsyncOperation* CLbtUpdateAsyncOperation::NewL(
+     CLbtContainerTriggerEntry& aEntry,
+     TLbtTriggerDataMask aDataMask,
+     TLbtTriggerAttributeFieldsMask aAttrMask,
+     TRequestStatus& aClientStatus,
+     TLbtSecurityPolicy aSecurityPolicy,
+     TContainerAOOperation aUpdateOpType)
+    {
+	CLbtUpdateAsyncOperation* self=new( ELeave ) CLbtUpdateAsyncOperation(aSecurityPolicy);
+	CleanupStack::PushL( self );
+    self->ConstructL(aEntry,aDataMask,aAttrMask,aClientStatus,aUpdateOpType);
+    CleanupStack::Pop( self ); 
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::NewL()
+// ---------------------------------------------------------------------------
+//
+CLbtUpdateAsyncOperation* CLbtUpdateAsyncOperation::NewL( RArray<TLbtTriggerId>& aTriggerIds,
+								                    	  TRequestStatus& aClientStatus,
+								                    	  TBool aFireBool,
+								                    	  TLbtSecurityPolicy aSecurityPolicy,
+								                    	  TContainerAOOperation aUpdateOpType )
+	{
+	CLbtUpdateAsyncOperation* self=new( ELeave ) CLbtUpdateAsyncOperation(aSecurityPolicy);
+	CleanupStack::PushL( self );
+    self->ConstructL(aTriggerIds, aClientStatus, aFireBool, aUpdateOpType);
+    CleanupStack::Pop( self ); 
+    return self;
+	}
+
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::NewL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+
+  CLbtUpdateAsyncOperation* CLbtUpdateAsyncOperation::NewL(
+     CLbtTriggerEntry::TLbtTriggerState aState,
+     CLbtContainerUpdateFilter* aFilter,
+     TLbtFireOnUpdate aFireOnUpdate,
+     TRequestStatus& aClientStatus,
+     TLbtSecurityPolicy aSecurityPolicy,
+     TContainerAOOperation aUpdateOpType)
+    {
+	CLbtUpdateAsyncOperation* self = new( ELeave ) CLbtUpdateAsyncOperation(aSecurityPolicy);
+	CleanupStack::PushL( self );
+    self->ConstructL( aState,
+                      aFilter,
+                      aFireOnUpdate,
+                      aClientStatus,
+                      aUpdateOpType);
+    CleanupStack::Pop( self ); 
+    return self;
+    }
+    
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::NewL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+  CLbtUpdateAsyncOperation* CLbtUpdateAsyncOperation::NewL( TLbtTriggerDynamicInfo::TLbtTriggerValidity aValidity,
+														    RArray<TLbtTriggerId> &aTriggerIds,
+														    TRequestStatus& aClientStatus,
+														    TLbtSecurityPolicy aSecurityPolicy,
+														    TContainerAOOperation aUpdateOpType )
+    {
+	CLbtUpdateAsyncOperation* self=new( ELeave ) CLbtUpdateAsyncOperation(aSecurityPolicy);
+	CleanupStack::PushL( self );
+    self->ConstructL(aValidity,aTriggerIds,aClientStatus,aUpdateOpType);
+    CleanupStack::Pop( self ); 
+    return self;
+    }
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::ConstructL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//        
+void CLbtUpdateAsyncOperation::ConstructL( CLbtContainerTriggerEntry& aEntry,
+									       TLbtTriggerDataMask aDataMask,
+									       TLbtTriggerAttributeFieldsMask aAttrMask,
+									       TRequestStatus& aClientStatus,
+									       TContainerAOOperation aUpdateOpType )
+    {
+    iEntry = &aEntry;
+    iDataMask = aDataMask;
+    iAttrMask = aAttrMask;
+    iClientStatus = &aClientStatus;
+    iUpdateOpType = aUpdateOpType;
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::ConstructL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//      
+void CLbtUpdateAsyncOperation::ConstructL( CLbtTriggerEntry::TLbtTriggerState aState,
+									       CLbtContainerUpdateFilter* aFilter,
+									       TLbtFireOnUpdate aFireOnUpdate,
+									       TRequestStatus& aClientStatus,
+									       TContainerAOOperation aUpdateOpType ) 
+     
+    {
+    iState = aState;
+    iFilter = aFilter;
+    iClientStatus = &aClientStatus;
+    iUpdateOpType = aUpdateOpType;
+    iFireOnUpdate = aFireOnUpdate;
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::ConstructL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//      
+void CLbtUpdateAsyncOperation::ConstructL( TLbtTriggerDynamicInfo::TLbtTriggerValidity aValidity,
+										   RArray <TLbtTriggerId>& aTriggerIds,
+										   TRequestStatus& aClientStatus,
+										   TContainerAOOperation aUpdateOpType)  
+    {
+    FUNC_ENTER("CLbtUpdateAsyncOperation::ConstructL");
+    for(TInt i=0;i<aTriggerIds.Count();++i)
+    	{
+    	iTriggerIds.Append(aTriggerIds[i]);
+    	}
+    iValidity = aValidity;
+    iClientStatus = &aClientStatus;
+    iUpdateOpType = aUpdateOpType;
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::ConstructL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//      
+void CLbtUpdateAsyncOperation::ConstructL( RArray<TLbtTriggerId>& aTriggerIds,
+				                    	   TRequestStatus& aClientStatus,
+				                    	   TBool aFireBool,
+				                    	   TContainerAOOperation aUpdateOpType )
+	{
+	FUNC_ENTER("CLbtUpdateAsyncOperation::ConstructL");
+	for(TInt i=0;i<aTriggerIds.Count();++i)
+    	{
+    	iTriggerIds.Append(aTriggerIds[i]);
+    	}
+	iClientStatus = &aClientStatus;
+	iUpdateOpType = aUpdateOpType;
+	iFireBool = aFireBool;
+	}
+
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::StartAOOperation()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//    
+void CLbtUpdateAsyncOperation::StartAOOperationL(MLbtTriggerStore* aStore, TRequestStatus &aStatus) 
+    {
+    FUNC_ENTER("CLbtUpdateAsyncOperation::StartAOOperationL");
+    aStatus = KRequestPending;
+    switch(iUpdateOpType)
+    	{
+    	case EOpUpdateTrigger:
+    		{
+    		TRAPD(error,aStore->UpdateTriggerL( *iEntry,
+    											iDataMask,
+    											iAttrMask,
+    											iSecurityPolicy,
+    											aStatus));
+        
+	        if(error != KErrNone && aStatus == KRequestPending)
+	            {
+	        	TRequestStatus* status = &aStatus;
+	            User::RequestComplete(status, error);
+	            }
+    		break;
+    		}
+    	case EOpUpdateTriggerState:
+    		{
+    		TRAPD(error, aStore->UpdateTriggersStateL( iState,
+    												   iFilter,
+    												   iFireOnUpdate,
+    												   iSecurityPolicy,
+    												   aStatus));
+
+    		if(error != KErrNone && aStatus == KRequestPending)
+    			{
+    			TRequestStatus* status = &aStatus;
+    			User::RequestComplete(status, error);
+    			}
+    		break;
+    		}
+    	case EOpUpdateTriggersValidity:
+    		{
+    		TRAPD(error ,aStore->UpdateTriggersValidityL( iValidity,
+    													  iTriggerIds,
+    													  iSecurityPolicy,
+    													  aStatus));
+    		if(error != KErrNone && aStatus == KRequestPending)
+    			{
+    			TRequestStatus* status = &aStatus;
+    			User::RequestComplete(status, error);
+    			}
+    		break;
+    		}
+    	case EOpUpdateTriggersFiredState:
+    		{
+    		TRAPD(error, aStore->UpdateTriggerFiredStateL(iTriggerIds, iFireBool, aStatus));
+
+    		if(error != KErrNotFound && aStatus == KRequestPending)
+    			{
+    			TRequestStatus* status = &aStatus;
+	            User::RequestComplete(status, error);
+    			}
+    		break;
+    		}
+    	default:
+    		{
+    		TRequestStatus* status = &aStatus;
+	        User::RequestComplete(status, KErrArgument);
+    		break;
+    		}
+    	}    
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::~CLbtUpdateAsyncOperation()
+// ---------------------------------------------------------------------------
+//
+TContainerAOOperation CLbtUpdateAsyncOperation::GetAOOperationType()    
+	{
+	return iUpdateOpType;
+	}
+  
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::GetStatus()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+  TRequestStatus* CLbtUpdateAsyncOperation::GetStatus()
+    {
+    return iClientStatus;
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtUpdateAsyncOperation::~CLbtUpdateAsyncOperation()
+// ---------------------------------------------------------------------------
+//
+ CLbtUpdateAsyncOperation::~CLbtUpdateAsyncOperation()
+    {
+    iTriggerIds.Close();
+    delete iFilter; 
+    }
+
+// ---------------------------------------------------------------------------
+// Constructor
+//
+// ---------------------------------------------------------------------------
+//
+CLbtUpdateAsyncOperation::CLbtUpdateAsyncOperation(TLbtSecurityPolicy aSecurityPolicy): 
+							iEntry(NULL),
+							iFilter(NULL),
+							iClientStatus(NULL),
+							iSecurityPolicy(aSecurityPolicy)
+    {
+   
+
+    }
+
+// end of file