locationtriggering/ltclientlib/src/lbtsessiontrigger.cpp
changeset 0 667063e416a2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/locationtriggering/ltclientlib/src/lbtsessiontrigger.cpp	Tue Feb 02 01:06:48 2010 +0200
@@ -0,0 +1,254 @@
+/*
+* Copyright (c) 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: Implementation of class representing session trigger
+* entries.
+*
+*/
+
+
+#include <s32strm.h>
+#include "lbtsessiontrigger.h"
+#include "lbttriggerentry.h"
+#include "lbttriggerconditionbase.h"
+#include "lbttriggerconditionarea.h"
+
+const TInt EnabledState=1;
+const TInt DisabledState=2;
+const TInt ConditionArea=1;
+// ======== LOCAL FUNCTIONS ========
+
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::NewL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C  CLbtSessionTrigger* CLbtSessionTrigger::NewL()
+    {
+  	CLbtSessionTrigger* self = new( ELeave ) CLbtSessionTrigger;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+	CleanupStack::Pop( self );    
+    return self;
+    }
+    
+    
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::NewL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C  CLbtSessionTrigger* CLbtSessionTrigger::NewLC()
+    {
+  	CLbtSessionTrigger* self = new( ELeave ) CLbtSessionTrigger;
+    CleanupStack::PushL( self );
+    self->ConstructL();
+	return self;
+    }
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::NewL(TCoordinate aCenter,
+//            TReal aRadius)
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C  CLbtSessionTrigger* CLbtSessionTrigger::NewL( 
+            const TDesC& aName,
+            TLbtTriggerState aState,
+            CRequestor::TRequestorType aRequestorType,
+            CRequestor::TRequestorFormat aRequestorFormat,
+            const TDesC& aRequestorData,
+            TUid aManagerUi,
+            CLbtTriggerConditionBase* aCondition)
+    {
+	CLbtSessionTrigger* self = new( ELeave ) CLbtSessionTrigger;
+    CleanupStack::PushL( self );
+    self->ConstructL(aName,aState,aRequestorType,aRequestorFormat,aRequestorData,aManagerUi,aCondition);
+	CleanupStack::Pop( self );    
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::NewL()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//
+EXPORT_C  CLbtSessionTrigger* CLbtSessionTrigger::NewL( 
+            const TDesC& aName,
+            CLbtTriggerEntry::TLbtTriggerState aState,
+            const RRequestorStack& aRequestors,
+            TUid aManagerUi,
+            CLbtTriggerConditionBase* aCondition )
+            
+    {
+ 	CLbtSessionTrigger* self = new( ELeave ) CLbtSessionTrigger;
+    CleanupStack::PushL( self );
+    self->ConstructL(aName,aState, aRequestors, aManagerUi, aCondition);
+ 	CleanupStack::Pop( self );    
+    return self;
+    }
+ 
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::Type()
+//
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+//        
+EXPORT_C CLbtTriggerEntry::TType CLbtSessionTrigger::Type() const
+    {
+	return CLbtTriggerEntry::ETypeSession;
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::CLbtSessionTrigger()
+// Default constructor
+// ---------------------------------------------------------------------------
+//
+CLbtSessionTrigger::CLbtSessionTrigger()
+    {
+	
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::~CLbtSessionTrigger()
+// Destructor
+// ---------------------------------------------------------------------------
+//
+CLbtSessionTrigger::~CLbtSessionTrigger()
+    {
+	
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
+void CLbtSessionTrigger::ConstructL(const TDesC& aName,TLbtTriggerState aState,
+            CRequestor::TRequestorType aRequestorType,
+            CRequestor::TRequestorFormat aRequestorFormat,
+            const TDesC& aRequestorData,
+            TUid aManagerUi,
+            CLbtTriggerConditionBase* aCondition)
+    {
+	SetNameL(aName);
+	SetState(aState);
+    SetRequestorL(aRequestorType,aRequestorFormat,aRequestorData);
+	SetCondition(aCondition);
+	SetManagerUi(aManagerUi);
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
+void CLbtSessionTrigger::ConstructL(const TDesC& aName,
+            CLbtTriggerEntry::TLbtTriggerState aState,
+            const RRequestorStack& aRequestors,
+            TUid aManagerUi,
+            CLbtTriggerConditionBase* aCondition)
+            
+    {
+	SetNameL(aName);
+	SetState(aState);
+	SetManagerUi(aManagerUi);
+	SetCondition(aCondition);
+	SetRequestorsL(aRequestors);
+	} 
+
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::DoInternalizeL()
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+// 
+void CLbtSessionTrigger::DoInternalizeL(RReadStream& aStream) 
+    {
+	SetId(aStream.ReadInt32L());
+	TBuf16<KLbtMaxNameLength> name;
+	TInt namLength=aStream.ReadInt32L();
+	aStream.ReadL(name,namLength);
+	SetNameL(name);
+	TInt state;
+	state=aStream.ReadInt8L();
+	TLbtTriggerState trigState=CLbtTriggerEntry::EStateEnabled;
+	if(state==EnabledState)
+	trigState=CLbtTriggerEntry::EStateEnabled;
+	else if(state==DisabledState) 
+	trigState=CLbtTriggerEntry::EStateDisabled;
+	SetState(trigState);
+	TInt rearmTime = aStream.ReadInt32L();
+	SetTimeToRearm( rearmTime );
+	TUid managerUid;
+	managerUid.iUid=aStream.ReadInt32L();
+	SetManagerUi(managerUid);
+	TInt condType=aStream.ReadInt8L();
+	if(condType==ConditionArea)
+	    {
+		CLbtTriggerConditionArea *area=CLbtTriggerConditionArea::NewL();
+		area->InternalizeL(aStream);
+		SetCondition(area);
+    	} 
+    }
+
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::DoExternalizeL()
+// (other items were commented in a header).
+// ---------------------------------------------------------------------------
+// 
+void CLbtSessionTrigger::DoExternalizeL(RWriteStream& aStream) const 
+    {
+	aStream.WriteInt32L(Id());
+	const TDesC& name=Name();
+	TInt len=name.Length();
+	aStream.WriteInt32L(len);
+	aStream.WriteL(name,len);
+	TLbtTriggerState state=State();
+	
+	if(state==CLbtTriggerEntry::EStateEnabled)
+		aStream.WriteInt8L(EnabledState);
+	else
+		aStream.WriteInt8L(DisabledState);
+	TInt rearmTime = TimeToRearm();
+	aStream.WriteInt32L( rearmTime );
+	aStream.WriteInt32L(ManagerUi().iUid);
+	const CLbtTriggerConditionBase* Cond=GetCondition();
+	CLbtTriggerConditionBase::TType condType;
+	if(Cond!=NULL)
+	    {
+	    condType=Cond->Type();
+	    if(condType==CLbtTriggerConditionBase::ETriggerConditionArea)
+			aStream.WriteInt8L(ConditionArea);
+	    Cond->ExternalizeL(aStream);
+	    }
+	else
+	    {
+	    aStream.WriteInt8L(0);
+	    }    
+	}
+
+// ---------------------------------------------------------------------------
+// CLbtSessionTrigger::ConstructL()
+// Symbian 2nd phase constructor can leave.
+// ---------------------------------------------------------------------------
+//
+void CLbtSessionTrigger::ConstructL()
+    {
+	SetState(CLbtTriggerEntry::EStateEnabled);
+	SetId(KLbtNullTriggerId);
+	SetCondition(NULL);
+	SetNameL(KNullDesC());
+    }
+