diff -r 13d7c31c74e0 -r b183ec05bd8c remotemgmt_plat/syncml_ds_customization_api/tsrc/exampledevinfextdataplugin/src/exampledevinfextdatacontainerplugin.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/remotemgmt_plat/syncml_ds_customization_api/tsrc/exampledevinfextdataplugin/src/exampledevinfextdatacontainerplugin.cpp Tue Aug 31 16:04:06 2010 +0300 @@ -0,0 +1,241 @@ +/* +* Copyright (c) 2010 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: Example Device Info Extension Data Container Plugin source file. +* +*/ + +// EXTERNAL INCLUDES +#include + +// CLASS HEADER +#include "exampledevinfextdatacontainerplugin.h" + +// ----------------------------------------------------------------------------- +// CExampleDevInfExtDataContainerPlugin::CExampleDevInfExtDataContainerPlugin() +// ----------------------------------------------------------------------------- +CExampleDevInfExtDataContainerPlugin::CExampleDevInfExtDataContainerPlugin() + { + } + +// ----------------------------------------------------------------------------- +// void CExampleDevInfExtDataContainerPlugin::ConstructL() +// ----------------------------------------------------------------------------- +void CExampleDevInfExtDataContainerPlugin::ConstructL() + { + } + +// ----------------------------------------------------------------------------- +// CExampleDevInfExtDataContainerPlugin* CExampleDevInfExtDataContainerPlugin::NewL() +// ----------------------------------------------------------------------------- +CExampleDevInfExtDataContainerPlugin* CExampleDevInfExtDataContainerPlugin::NewL() + { + CExampleDevInfExtDataContainerPlugin* self = + new (ELeave) CExampleDevInfExtDataContainerPlugin(); + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// ----------------------------------------------------------------------------- +// CExampleDevInfExtDataContainerPlugin::~CExampleDevInfExtDataContainerPlugin() +// ----------------------------------------------------------------------------- +CExampleDevInfExtDataContainerPlugin::~CExampleDevInfExtDataContainerPlugin() + { + for( TInt i = 0; i < iExtensionArray.Count(); i++ ) + { + iExtensionArray[ i ].iXValArray.Close(); + } + iExtensionArray.Close(); + } + +// ----------------------------------------------------------------------------- +// TInt CExampleDevInfExtDataContainerPlugin::GetExtensionCountL() +// ----------------------------------------------------------------------------- +TInt CExampleDevInfExtDataContainerPlugin::GetExtensionCountL() + { + return iExtensionArray.Count(); + } + +// ----------------------------------------------------------------------------- +// const TDesC8& CExampleDevInfExtDataContainerPlugin::GetExtNameL() +// ----------------------------------------------------------------------------- +const TDesC8& CExampleDevInfExtDataContainerPlugin::GetExtNameL( TInt aExtIndex ) + { + if( aExtIndex < 0 || aExtIndex >= iExtensionArray.Count() ) + { + // Illegal index + User::Leave( KErrArgument ); + } + + return iExtensionArray[ aExtIndex ].iXNam; + } + +// ----------------------------------------------------------------------------- +// TInt CExampleDevInfExtDataContainerPlugin::GetExtValueCountL() +// ----------------------------------------------------------------------------- +TInt CExampleDevInfExtDataContainerPlugin::GetExtValueCountL( TInt aExtIndex ) + { + if( aExtIndex < 0 || aExtIndex >= iExtensionArray.Count() ) + { + // Illegal index + User::Leave( KErrArgument ); + } + + return iExtensionArray[ aExtIndex ].iXValArray.Count(); + } + +// ----------------------------------------------------------------------------- +// const TDesC8& CExampleDevInfExtDataContainerPlugin::GetExtValueL() +// ----------------------------------------------------------------------------- +const TDesC8& CExampleDevInfExtDataContainerPlugin::GetExtValueL( TInt aExtIndex, + TInt aValueIndex ) + { + + // Check for illegal indices + if( aExtIndex < 0 || aExtIndex >= iExtensionArray.Count() ) + { + User::Leave( KErrArgument ); + } + if( aValueIndex < 0 || + aValueIndex >= iExtensionArray[ aExtIndex ].iXValArray.Count() ) + { + User::Leave( KErrArgument ); + } + + return iExtensionArray[ aExtIndex ].iXValArray[ aValueIndex ]; + } + +// ----------------------------------------------------------------------------- +// void CExampleDevInfExtDataContainerPlugin::ClearExtensions() +// ----------------------------------------------------------------------------- +void CExampleDevInfExtDataContainerPlugin::ClearExtensions() + { + for( TInt i = 0; i < iExtensionArray.Count(); i++ ) + { + iExtensionArray[ i ].iXValArray.Reset(); + } + iExtensionArray.Reset(); + } + +// ----------------------------------------------------------------------------- +// void CExampleDevInfExtDataContainerPlugin::InsertExtension() +// ----------------------------------------------------------------------------- +void CExampleDevInfExtDataContainerPlugin::InsertExtension( + const TDesC8& aXNam, const TDesC8& aXVal ) + { + TInt index = FindExtensionIndex( aXNam ); + if( index != KErrNotFound ) + { + AddXValToItem( index, aXVal ); + } + else + { + AddNewXValItem( aXNam, aXVal ); + } + } + +// ----------------------------------------------------------------------------- +// void CExampleDevInfExtDataContainerPlugin::RemoveExtension() +// ----------------------------------------------------------------------------- +void CExampleDevInfExtDataContainerPlugin::RemoveExtension( const TDesC8& aXNam ) + { + TInt index = FindExtensionIndex( aXNam ); + if( index != KErrNotFound ) + { + iExtensionArray.Remove( index ); + } + } + +// ----------------------------------------------------------------------------- +// void CExampleDevInfExtDataContainerPlugin::FindExtensionIndex() +// ----------------------------------------------------------------------------- +TInt CExampleDevInfExtDataContainerPlugin::FindExtensionIndex( + const TDesC8& aXNam ) + { + TInt index = KErrNotFound; + + for( TInt i = 0; i < iExtensionArray.Count(); i++ ) + { + TExampleDevInfExtExtensionItem item = iExtensionArray[ i ]; + if( aXNam.Compare( item.iXNam ) == 0 ) + { + index = i; + break; + } + } + return index; + } + +// ----------------------------------------------------------------------------- +// void CExampleDevInfExtDataContainerPlugin::AddXValToItem() +// ----------------------------------------------------------------------------- +void CExampleDevInfExtDataContainerPlugin::AddXValToItem( + const TInt aIndex, const TDesC8& aXVal ) + { + ASSERT( aIndex >= 0 ); + ASSERT( aIndex < iExtensionArray.Count() ); + + if( aXVal.Length() == 0 ) + { + // No XVal set, do not insert anything to XVal array + return; + } + else if( aXVal.Length() <= KExtensionElementMaxLength ) + { + iExtensionArray[ aIndex ].iXValArray.Append( aXVal ); + } + else + { + iExtensionArray[ aIndex ].iXValArray.Append( + aXVal.Left( KExtensionElementMaxLength ) ); + } + } + +// ----------------------------------------------------------------------------- +// void CExampleDevInfExtDataContainerPlugin::AddNewXValItem() +// ----------------------------------------------------------------------------- +void CExampleDevInfExtDataContainerPlugin::AddNewXValItem( + const TDesC8& aXNam, const TDesC8& aXVal ) + { + TExampleDevInfExtExtensionItem item; + + // Insert XNam + if( aXNam.Length() <= KExtensionElementMaxLength ) + { + item.iXNam = aXNam; + } + else + { + item.iXNam = aXNam.Left( KExtensionElementMaxLength ); + } + + // Insert XVal + if( aXVal.Length() > 0 ) + { + if( aXVal.Length() <= KExtensionElementMaxLength ) + { + item.iXValArray.Append( aXVal ); + } + else + { + item.iXValArray.Append( aXVal.Left( KExtensionElementMaxLength ) ); + } + } + + // Add to extension array as a new entry + iExtensionArray.Append( item ); + } + +// End of file