diff -r 0aa8cc770c8a -r 4a793f564d72 connectivitymodules/SeCon/clients/syncclient/src/scondataproviderinfo.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/connectivitymodules/SeCon/clients/syncclient/src/scondataproviderinfo.cpp Wed Sep 01 12:20:56 2010 +0100 @@ -0,0 +1,220 @@ +/* +* 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: CSconDataproviderInfo implementation +* +*/ + + +#include "scondataproviderinfo.h" +#include +#include +#include // for CnvUtfConverter +#include "debug.h" + +CSconDataproviderInfo::CSconDataproviderInfo() + { + } + +EXPORT_C CSconDataproviderInfo::~CSconDataproviderInfo() + { + delete iName; + delete iDefaultStore; + delete iStores; + } + +EXPORT_C CSconDataproviderInfo* CSconDataproviderInfo::NewL() + { + return new (ELeave) CSconDataproviderInfo(); + } + +EXPORT_C void CSconDataproviderInfo::ExternalizeL( RWriteStream& aStream ) const + { + TRACE_FUNC_ENTRY; + LOGGER_WRITE_1("iUid: 0x%x", iUid); + aStream.WriteInt32L( iUid ); + if ( iName ) + { + HBufC8* temp = CnvUtfConverter::ConvertFromUnicodeToUtf8L( iName->Des() ); + CleanupStack::PushL( temp ); + TPtrC8 tempPtr = temp->Des(); + aStream.WriteUint16L( tempPtr.Length() ); + aStream.WriteL( tempPtr ); + CleanupStack::PopAndDestroy( temp ); + } + else + { + aStream.WriteUint16L( 0 ); + } + + if ( iDefaultStore ) + { + HBufC8* temp = CnvUtfConverter::ConvertFromUnicodeToUtf8L( iDefaultStore->Des() ); + CleanupStack::PushL( temp ); + TPtrC8 tempPtr = temp->Des(); + aStream.WriteUint16L( tempPtr.Length() ); + aStream.WriteL( tempPtr ); + CleanupStack::PopAndDestroy( temp ); + } + else + { + aStream.WriteUint16L( 0 ); + } + if ( iStores ) + { + aStream.WriteUint16L( iStores->Count() ); + for ( TInt i=0; iCount(); i++ ) + { + TPtrC storePtr = (*iStores)[i]; + HBufC8* temp = CnvUtfConverter::ConvertFromUnicodeToUtf8L( storePtr ); + CleanupStack::PushL( temp ); + TPtrC8 tempPtr = temp->Des(); + aStream.WriteUint16L( tempPtr.Length() ); + if ( tempPtr.Length() > 0 ) + { + aStream.WriteL( tempPtr ); + } + CleanupStack::PopAndDestroy( temp ); + } + } + else + { + aStream.WriteUint16L( 0 ); + } + aStream.CommitL(); + TRACE_FUNC_EXIT; + } + +EXPORT_C void CSconDataproviderInfo::InternalizeL( RReadStream& aStream ) + { + TRACE_FUNC_ENTRY; + delete iName; + iName = NULL; + delete iDefaultStore; + iDefaultStore = NULL; + delete iStores; + iStores = NULL; + iStores = new ( ELeave ) CDesCArrayFlat( 1 ); + iUid = aStream.ReadInt32L(); + TInt len = aStream.ReadUint16L(); + if ( len > 0 ) + { + HBufC8* tempBuf = HBufC8::NewLC( len ); + TPtr8 tempPtr = tempBuf->Des(); + aStream.ReadL( tempPtr, len ); + + iName = CnvUtfConverter::ConvertToUnicodeFromUtf8L( tempPtr ); + CleanupStack::PopAndDestroy( tempBuf ); + } + + len = aStream.ReadUint16L(); + if ( len > 0 ) + { + HBufC8* tempBuf = HBufC8::NewLC( len ); + TPtr8 tempPtr = tempBuf->Des(); + aStream.ReadL( tempPtr, len ); + + iDefaultStore = CnvUtfConverter::ConvertToUnicodeFromUtf8L( tempPtr ); + CleanupStack::PopAndDestroy( tempBuf ); + } + + TInt storeCount = aStream.ReadUint16L(); + for (TInt i=0; i 0 ) + { + HBufC8* tempBuf8 = HBufC8::NewLC( len ); + TPtr8 tempPtr8 = tempBuf8->Des(); + aStream.ReadL( tempPtr8, len ); + + HBufC* temp = CnvUtfConverter::ConvertToUnicodeFromUtf8L( tempPtr8 ); + CleanupStack::PushL( temp ); + TPtr tempPtr = temp->Des(); + iStores->AppendL( tempPtr ); + CleanupStack::PopAndDestroy( temp ); + CleanupStack::PopAndDestroy( tempBuf8 ); + } + } + TRACE_FUNC_EXIT; + } + +EXPORT_C TUid CSconDataproviderInfo::ImplementationUid() const + { + return TUid::Uid( iUid ); + } + +EXPORT_C void CSconDataproviderInfo::SetImplementationUid( const TUid aUid ) + { + iUid = aUid.iUid; + } + +EXPORT_C TDesC& CSconDataproviderInfo::DisplayNameL() + { + if ( iName ) + { + return *iName; + } + else + { + iName = KNullDesC().AllocL(); + return *iName; + } + } + +EXPORT_C void CSconDataproviderInfo::SetDisplayNameL( const TDesC& aName ) + { + delete iName; + iName = NULL; + iName = aName.AllocL(); + } + +EXPORT_C TDesC& CSconDataproviderInfo::DefaultStoreL() + { + if ( iDefaultStore ) + { + return *iDefaultStore; + } + else + { + iDefaultStore = KNullDesC().AllocL(); + return *iDefaultStore; + } + } + +EXPORT_C void CSconDataproviderInfo::SetDefaultStoreL( const TDesC& aStore ) + { + delete iDefaultStore; + iDefaultStore = NULL; + iDefaultStore = aStore.AllocL(); + } + +EXPORT_C CDesCArray* CSconDataproviderInfo::ListStoresL() const + { + if ( !iStores ) + { + User::Leave( KErrNotFound ); + } + return iStores; + } + +EXPORT_C void CSconDataproviderInfo::SetStoresL( const CDesCArray& aStores ) + { + delete iStores; + iStores = NULL; + iStores = new ( ELeave ) CDesCArrayFlat( 1 ); + for ( TInt i=0; iAppendL( aStores[i] ); + } + }