locationtriggering/ltcontainer/src/lbtcontainerextendedtriggerinfo.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 31 Aug 2010 15:37:04 +0300
branchRCL_3
changeset 44 2b4ea9893b66
parent 0 667063e416a2
permissions -rw-r--r--
Revision: 201033 Kit: 201035

/*
* 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:  class containing extended information about a trigger
*
*/


#include "lbtcontainerextendedtriggerinfo.h"

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

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

EXPORT_C CLbtExtendedTriggerInfo* CLbtExtendedTriggerInfo::NewL(
    TLbtTriggerRectArea aArea,
    TReal aHystRadius,
    TBool aFired,
    const TDesC8& aStrategyData,
    TSecureId aOwnerSid,
    TBool aFireOnCreation)
    {
	CLbtExtendedTriggerInfo* self=new( ELeave ) CLbtExtendedTriggerInfo;
	CleanupStack::PushL( self );
    self->ConstructL( aArea,
                      aHystRadius,
                      aFired, 
                      aStrategyData,
                      aOwnerSid,
                      aFireOnCreation );
    CleanupStack::Pop( self ); 
    return self;
    }

EXPORT_C CLbtExtendedTriggerInfo::~CLbtExtendedTriggerInfo()
    {
    delete iStrategyData;
    }

EXPORT_C const CLbtExtendedTriggerInfo::TLbtTriggerRectArea 
    CLbtExtendedTriggerInfo::TriggerReactangleArea() const
    {
    return iArea;
    }

EXPORT_C void CLbtExtendedTriggerInfo::SetTriggerRectangleArea(
    const CLbtExtendedTriggerInfo::TLbtTriggerRectArea& aArea)
    {
    iArea = aArea;
    }

EXPORT_C const TReal& CLbtExtendedTriggerInfo::HysteresisRadius() const
    {
    return iHystRadius;
    }
    
EXPORT_C void CLbtExtendedTriggerInfo::SetHysteresisRadius(
    const TReal& aHystRadius)
    {
    iHystRadius = aHystRadius;
    }

EXPORT_C TBool CLbtExtendedTriggerInfo::IsTriggerFired() const
    {
    return iFired;
    }
    
EXPORT_C void CLbtExtendedTriggerInfo::SetTriggerFiredState(TBool aFired)
    {
    iFired = aFired;
    }

EXPORT_C const TDesC8& CLbtExtendedTriggerInfo::StategyData() const
    {
    return *iStrategyData;
    }
    
EXPORT_C TLbtTriggerFireInfo CLbtExtendedTriggerInfo::GetFiredInfo() const
    {
    return iFiredInfo;
    }
    
EXPORT_C void CLbtExtendedTriggerInfo::SetFiredInfo(TLbtTriggerFireInfo aFiredInfo)
    {
    iFiredInfo = aFiredInfo;
    }
    
EXPORT_C void CLbtExtendedTriggerInfo::SetStrategyDataL(
    const TDesC8& aStrategyData)
    {
    // Pre-allocate the memory. If the memory allocation fails atleast the
    // old data is still valid in this case.
    HBufC8 *tmp = HBufC8::NewL( aStrategyData.Length() );
    tmp->Des().Copy( aStrategyData );
    if ( iStrategyData )
        {
        delete iStrategyData;
        iStrategyData = NULL;
        }
    iStrategyData = tmp;
    }

EXPORT_C const TSecureId& CLbtExtendedTriggerInfo::OwnerSid() const
    {
    return iOwnerSid;
    }
    
EXPORT_C void CLbtExtendedTriggerInfo::SetOwnerSid(const TSecureId& aOwnerSid)
    {
    iOwnerSid = aOwnerSid;
    }

EXPORT_C TBool CLbtExtendedTriggerInfo::IsTriggerFireOnCreation() const
	{
	return iFireOnCreation;	
	}

EXPORT_C void CLbtExtendedTriggerInfo::SetTriggerFireOnCreation(TBool aFireOnCreation)
	{
	iFireOnCreation = aFireOnCreation;	
	}

CLbtExtendedTriggerInfo::CLbtExtendedTriggerInfo()
    {
    }

void CLbtExtendedTriggerInfo::ConstructL()
    {
    // Fill iStrategyData with KNullDesC.
    // This is required because the method StategyData()
    // does not return a pointer. Instead it returns a TDesC&.
    // If this HBufC is null then accessing the Ptr will result
    // in a KERN-EXEC 3.
    SetStrategyDataL( KNullDesC8() );
    }

void CLbtExtendedTriggerInfo::ConstructL(
    TLbtTriggerRectArea aArea,
    TReal aHystRadius,
    TBool aFired,
    const TDesC8& aStrategyData,
    TSecureId aOwnerSid,
    TBool aFireOnCreation)
    {
    SetTriggerRectangleArea( aArea );
    SetHysteresisRadius( aHystRadius );
    SetTriggerFiredState( aFired );
    SetStrategyDataL( aStrategyData );
    SetOwnerSid( aOwnerSid );
    SetTriggerFireOnCreation(aFireOnCreation);
    }