locationtriggering/ltcontainer/src/lbtcontainerlistoptions.cpp
author hgs
Mon, 27 Sep 2010 16:57:22 +0530
changeset 50 4c28d569e1fe
parent 0 667063e416a2
permissions -rw-r--r--
201037_001

/*
* 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 "lbtcontainerlistoptions.h"
#include "lbtcontainertriggerfilter.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>

// ======== MEMBER FUNCTIONS ========

// ---------------------------------------------------------------------------
// CLbtContainerListOptions::NewL()
//
// (other items were commented in a header).
// ---------------------------------------------------------------------------
//
EXPORT_C  CLbtContainerListOptions* CLbtContainerListOptions::NewL()
    {
	CLbtContainerListOptions* self=new( ELeave ) CLbtContainerListOptions;
	CleanupStack::PushL( self );
    self->ConstructL();
    CleanupStack::Pop( self ); 
    return self;
    }


// ---------------------------------------------------------------------------
// CLbtContainerListOptions::NewL(
//    CLbtTriggerEntry* aEntry,
//    TLbtTriggerDynamicInfo* aDynInfo,
//    TLbtDerivedTriggerInfo* aDerivedInfo)
//
// (other items were commented in a header).
// ---------------------------------------------------------------------------
//
EXPORT_C  CLbtContainerListOptions* CLbtContainerListOptions::NewL(
    CLbtListTriggerOptions* aListOptions,
    CLbtContainerFilter* aFilter)
    {
	CLbtContainerListOptions* self=new( ELeave ) CLbtContainerListOptions;
	CleanupStack::PushL( self );
    self->ConstructL(aListOptions,aFilter);
    CleanupStack::Pop( self ); 
    return self;
    }


// ---------------------------------------------------------------------------
// CLbtContainerListOptions::~CLbtContainerListOptions()
// ---------------------------------------------------------------------------
//
EXPORT_C CLbtContainerListOptions::~CLbtContainerListOptions()
    {
    // Ownership of filter base is not take by list options.
    // Hence delete the filter base
    if( iListOptions )
    	{
    	CLbtTriggerFilterBase* filter = iListOptions->Filter();
    	delete filter;
    	}
    delete iListOptions;
    delete iFilter;
    }


// ---------------------------------------------------------------------------
// CLbtContainerListOptions::TriggerEntry()
//
// (other items were commented in a header).
// ---------------------------------------------------------------------------
//
EXPORT_C  CLbtListTriggerOptions* CLbtContainerListOptions::ListOptions()  
    {
	return iListOptions;
    }


// ---------------------------------------------------------------------------
// CLbtContainerListOptions::SetTriggerEntry()
//
// (other items were commented in a header).
// ---------------------------------------------------------------------------
//
EXPORT_C void CLbtContainerListOptions::SetListOptions( 
    CLbtListTriggerOptions* aListOptions )
    {
    if ( iListOptions )
        {
        delete iListOptions;
        }
	iListOptions = aListOptions;
    }



  
// ---------------------------------------------------------------------------
// CLbtContainerListOptions::DerivedInfo()
//
// (other items were commented in a header).
// ---------------------------------------------------------------------------
//
EXPORT_C  CLbtContainerFilter* CLbtContainerListOptions::ContainerFilter()  
    {
	return iFilter;
    }


// ---------------------------------------------------------------------------
// CLbtContainerListOptions::SetDerivedInfo()
//
// (other items were commented in a header).
// ---------------------------------------------------------------------------
//
EXPORT_C void CLbtContainerListOptions::SetContainerFilter( 
    CLbtContainerFilter* aFilter )
    {
    if ( iFilter )
        {
        delete iFilter;
        }
	iFilter = aFilter;
    }


EXPORT_C TLbtTriggerDataMask CLbtContainerListOptions::DataMask()
    {
    return iMask;
    }
     
EXPORT_C void CLbtContainerListOptions::SetDataMask( TLbtTriggerDataMask aMask)
    {
    iMask=aMask;
    }
// ---------------------------------------------------------------------------
// Constructor
//
// ---------------------------------------------------------------------------
//
CLbtContainerListOptions::CLbtContainerListOptions()
    {
    iListOptions = NULL;
    iFilter = NULL;
    }

// ---------------------------------------------------------------------------
// Clone method
//
// ---------------------------------------------------------------------------
//
void CLbtContainerListOptions::CloneL(CLbtContainerListOptions& /*aEntry*/)
    {
/*	CLbtTriggerEntry::TType trigType;
	trigType=aEntry.TriggerEntry()->Type();
	CLbtTriggerEntry* trigEntry=aEntry.TriggerEntry();
	CLbtTriggerConditionBase* trigCondition= trigEntry->GetCondition();
	TLbtTriggerDynamicInfo* dynInfo=aEntry.DynInfo();
	CLbtExtendedTriggerInfo* extInfo=aEntry.ExtendedTriggerInfo();
	CLbtGeoAreaBase* trigArea;
	
	if(trigType==CLbtTriggerEntry::ETypeSession)
		{
		iEntry=CLbtSessionTrigger::NewL();
		iEntry->SetId(trigEntry->Id());
		iEntry->SetNameL(trigEntry->Name());
		iEntry->SetManagerUi(trigEntry->ManagerUi());
		iEntry->SetState(trigEntry->State());
		if(trigCondition->Type() == 
		    CLbtTriggerConditionBase::ETriggerConditionArea)
			{
			CLbtTriggerConditionArea* cond = 
			    (CLbtTriggerConditionArea*)trigCondition;
			CLbtTriggerConditionArea* trigCondArea = 
			                        CLbtTriggerConditionArea::NewL();
			trigCondArea->SetDirection(cond->Direction());
			CLbtGeoAreaBase* areaBase=cond->TriggerArea();
			if( areaBase->Type() == CLbtGeoAreaBase::ECircle )
				{
				CLbtGeoCircle* areaCircle=(CLbtGeoCircle*) areaBase;
				trigArea=CLbtGeoCircle::NewL(areaCircle->Center(),
				                             areaCircle->Radius());
				trigCondArea->SetTriggerArea(trigArea);
				}
			else if(areaBase->Type()==CLbtGeoAreaBase::ERectangular)
				{
				CLbtGeoRect* areaRect=(CLbtGeoRect*)areaBase;
				TReal southLat,northLat,eastLong,westLong;
				areaRect->GetBorder(southLat,northLat,westLong,eastLong);
				 trigArea=CLbtGeoRect::NewL(southLat,
				                            northLat,
				                            westLong,
				                            eastLong);
				trigCondArea->SetTriggerArea(trigArea);
			    }
		    iEntry->SetCondition(trigCondArea);
		    }
		}
	else
		{
		iEntry=CLbtStartupTrigger::NewL();
		}
	iDynInfo=new TLbtTriggerDynamicInfo;
	iDynInfo->iValidity=dynInfo->iValidity;
	iDynInfo->iActivityStatus=dynInfo->iActivityStatus;
	iDynInfo->iDistanceToLatestLocation=dynInfo->iDistanceToLatestLocation;
	
	iExtendedTriggerInfo = CLbtExtendedTriggerInfo::NewL();
    
	iExtendedTriggerInfo->SetTriggerRectangleArea(extInfo->TriggerReactangleArea()) ;
	iExtendedTriggerInfo->SetHysteresisRadius(extInfo->HysteresisRadius());
	iExtendedTriggerInfo->SetTriggerFiredState(extInfo->IsTriggerFired());
//	iExtendedTriggerInfo->SetStrategyDataL(extInfo->StategyData());
	iExtendedTriggerInfo->SetOwnerSid(extInfo->OwnerSid());*/
    }
// ---------------------------------------------------------------------------
// Symbian 2nd phase of Construction
//
// ---------------------------------------------------------------------------
//
void CLbtContainerListOptions::ConstructL()
    {
    ConstructL(NULL,NULL);	
    }


// ---------------------------------------------------------------------------
// Symbian 2nd phase of Construction
//
// ---------------------------------------------------------------------------
//
void CLbtContainerListOptions::ConstructL(
    CLbtListTriggerOptions* aListOptions,
    CLbtContainerFilter* aFilter)
    {
    iListOptions = aListOptions;
    iFilter = aFilter;
    }