XDMEngine/XdmSettingsApi/src/XdmSettingsCollection.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Tue, 02 Feb 2010 01:05:17 +0200
changeset 0 c8caa15ef882
permissions -rw-r--r--
Revision: 201003 Kit: 201005

/*
* Copyright (c) 2005 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:   XDM Engine settings collection
*
*/



#include "XdmSettingsApi.h"
#include "XdmSettingsProperty.h"
#include "XdmSettingsCollection.h"

// ---------------------------------------------------------
// CXdmSettingsCollection::SetPropCollectionL
//
// ---------------------------------------------------------
//
EXPORT_C CXdmSettingsCollection::CXdmSettingsCollection()
    {
    }

// ---------------------------------------------------------
// CXdmSettingsCollection::~CXdmSettingsCollection
//
// ---------------------------------------------------------
//
EXPORT_C CXdmSettingsCollection::~CXdmSettingsCollection()
    {
    iPropCollection.ResetAndDestroy();
    }
        
// ---------------------------------------------------------
// CXdmSettingsCollection::Property
//
// ---------------------------------------------------------
//
EXPORT_C TPtrC CXdmSettingsCollection::Property( TXdmSettingsProperty aProperty ) const
    {
    CXdmSettingsProperty* property = Find( aProperty );
    return property ? property->PropertyValue(): TPtrC();
    }

// ---------------------------------------------------------
// CXdmSettingsCollection::Property
//
// ---------------------------------------------------------
//
EXPORT_C const CXdmSettingsProperty& CXdmSettingsCollection::Property( TInt aIndex ) const
    {
    __ASSERT_ALWAYS( aIndex >= 0 && aIndex < iPropCollection.Count(),
                     User::Panic( _L( "CXdmSettingsCollection" ), 0 ) );
    return *iPropCollection[aIndex];
    }
           
// ---------------------------------------------------------
// CXdmSettingsCollection::Count
//
// ---------------------------------------------------------
//
EXPORT_C TInt CXdmSettingsCollection::Count() const
    {
    return iPropCollection.Count();
    }
    
// ---------------------------------------------------------
// CXdmSettingsCollection::AppendL
//
// ---------------------------------------------------------
//
EXPORT_C void CXdmSettingsCollection::AppendL( const TDesC& aPropertyValue,
                                               TXdmSettingsProperty aPropertyName )
    {
    CXdmSettingsProperty* prop = CXdmSettingsProperty::NewL( aPropertyValue, aPropertyName );
    CleanupStack::PushL( prop );
    User::LeaveIfError( iPropCollection.Append( prop ) );
    CleanupStack::Pop();  //property
    }

// ---------------------------------------------------------
// CXdmSettingsCollection::RemoveL
//
// ---------------------------------------------------------
//
EXPORT_C void CXdmSettingsCollection::RemoveL( TXdmSettingsProperty aPropertyName )
    {
    CXdmSettingsProperty* property = Find( aPropertyName );
    if( property )
        {
        TInt index = iPropCollection.Find( property );
        iPropCollection.Remove( index );
        delete property;
        property = NULL;
        }   
    }

// ---------------------------------------------------------
// CXdmSettingsCollection::Find
//
// ---------------------------------------------------------
//
CXdmSettingsProperty* CXdmSettingsCollection::Find( TXdmSettingsProperty aProperty ) const
    {
    TBool found = EFalse;
    CXdmSettingsProperty* property = NULL;
    const TInt count = iPropCollection.Count();
    for( TInt i = 0;!found && i < count;i++ )
        {
        if( iPropCollection[i]->PropertyName() == aProperty )
            {
            found = ETrue;
            property = iPropCollection[i];
            }
        }
    return property;
    }
            
// End of File