diff -r 000000000000 -r 7f85d04be362 upnpavcontroller/upnpxmlparser/src/upnpobjectlite.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/upnpavcontroller/upnpxmlparser/src/upnpobjectlite.cpp Thu Dec 17 08:52:00 2009 +0200 @@ -0,0 +1,397 @@ +/* +* 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: Light weight version of UpnpObject +* +*/ + + + + + + +#include "upnpobjectlite.h" + +const TInt KDelimeter = 46; +const TInt KRound1 = 1; +const TInt KRound2 = 2; +const TInt KRound3 = 3; +const TInt KRound4 = 4; + +const TInt KMask1 = 0xFF000000; +const TInt KMask2 = 0x00FF0000; + +_LIT8( KObject, "object" ); +_LIT8( KItem, "item" ); +_LIT8( KContainer,"container" ); + +_LIT8( KImageItem, "imageItem" ); +_LIT8( KAudioItem, "audioItem" ); +_LIT8( KVideoItem, "videoItem" ); +_LIT8( KPlaylistItem, "playlistItem" ); +_LIT8( KStorageFolder, "storageFolder" ); +_LIT8( KPlaylistContainer, "playlistContainer" ); + +_LIT8( KMusicTrack,"musicTrack" ); +_LIT8( KPhoto,"photo" ); +_LIT8( KVideo,"video" ); +_LIT8( KMusicAlbum,"musicAlbum" ); + + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::CUpnpObjectLite +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +CUpnpObjectLite::CUpnpObjectLite() + { + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::~CUpnpObjectLite +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +EXPORT_C CUpnpObjectLite::~CUpnpObjectLite() + { + delete iObjectId; + delete iTitle; + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::NewL +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +void CUpnpObjectLite::ConstructL() + { + + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::NewL +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +EXPORT_C CUpnpObjectLite* CUpnpObjectLite::NewL() + { + CUpnpObjectLite* self = new (ELeave) CUpnpObjectLite(); + CleanupStack::PushL(self); + self->ConstructL(); + CleanupStack::Pop( self ); + return self; + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::SetObjectIdL +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +EXPORT_C void CUpnpObjectLite::SetObjectIdL( const TDesC8& aObjectId ) + { + HBufC8* tmp = aObjectId.AllocL(); + delete iObjectId; + iObjectId = tmp; + } + + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::SetObjectIdL +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +EXPORT_C void CUpnpObjectLite::SetObjectIdL( HBufC8* aObjectId ) + { + if( aObjectId ) + { + delete iObjectId; + iObjectId = aObjectId; + } + else + { + User::Leave( KErrArgument ); + } + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::ObjectId +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +EXPORT_C const TDesC8& CUpnpObjectLite::ObjectId() const + { + if( iObjectId ) + { + return *iObjectId; + } + else + { + return KNullDesC8; + } + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::SetTitleL +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +EXPORT_C void CUpnpObjectLite::SetTitleL( const TDesC& aTitle ) + { + HBufC* tmp = aTitle.AllocL(); + delete iTitle; + iTitle = tmp; + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::SetTitleL +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +EXPORT_C void CUpnpObjectLite::SetTitleL( HBufC* aTitle ) + { + if( aTitle ) + { + delete iTitle; + iTitle = aTitle; + } + else + { + User::Leave( KErrArgument ); + } + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::Title +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +EXPORT_C const TDesC& CUpnpObjectLite::Title() const + { + if( iTitle ) + { + return *iTitle; + } + else + { + return KNullDesC; + } + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::SetObjectClass +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +EXPORT_C void CUpnpObjectLite::SetObjectClass( const TDesC8& aObjectClass ) + { + iObjectClass = 0; + TInt round = 0; + + TLex8 input( aObjectClass ); + while( !input.Eos() ) + { + round++; + ParseToDelimeter( input, TChar( KDelimeter ) ); + + HandleRound( round, input.MarkedToken() ); + + if( !input.Eos() ) + { + input.SkipAndMark( 1 ); // Skip the delimeter + } + } + + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::IsTypeOf +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +EXPORT_C TBool CUpnpObjectLite::IsTypeOf( TObjectType aType ) const + { + TBool retVal = EFalse; + switch( aType ) + { + case EItem: + { + if( ( iObjectClass & KMask1 ) == EBaseItem ) + { + retVal = ETrue; + } + } + break; + case EContainer: + { + if( ( iObjectClass & KMask1 ) == EBaseContainer ) + { + retVal = ETrue; + } + } + break; + case EMusicItem: + { + if( ( iObjectClass & KMask2 ) == EBaseMusicItem ) + { + retVal = ETrue; + } + } + break; + case EImageItem: + { + if( ( iObjectClass & KMask2 ) == EBaseImageItem ) + { + retVal = ETrue; + } + } + break; + case EVideoItem: + { + if( ( iObjectClass & KMask2 ) == EBaseVideoItem ) + { + retVal = ETrue; + } + } + break; + default: + { + retVal = EFalse; + } + break; + } + + return retVal; + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::ParseToDelimeter +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +void CUpnpObjectLite::ParseToDelimeter( TLex8& aLex, TChar aDelimeter ) const + { + aLex.Mark(); + while( (aLex.Peek() != aDelimeter) && (!aLex.Eos()) ) + { + aLex.Inc(); + } + } + +// -------------------------------------------------------------------------- +// CUpnpObjectLite::HandleRound +// See upnpobjectlite.h +// -------------------------------------------------------------------------- +void CUpnpObjectLite::HandleRound( TInt aRound, TPtrC8 aString ) + { + switch( aRound ) + { + case KRound1: + { + Round1( aString ); + break; + } + case KRound2: + { + Round2( aString ); + break; + } + case KRound3: + { + Round3( aString ); + break; + } + case KRound4: + { + Round4( aString ); + break; + } + + default: + { + + break; + } + } + } + +void CUpnpObjectLite::Round1( TPtrC8 aString ) + { + if( aString.Compare( KObject ) != 0 ) + { + // Not an object + iObjectClass |= EBaseUnknown; + } + } + +void CUpnpObjectLite::Round2( TPtrC8 aString ) + { + if( aString.Compare( KItem ) == 0 ) + { + iObjectClass |= EBaseItem; + } + else if( aString.Compare( KContainer ) == 0 ) + { + iObjectClass |= EBaseContainer; + } + else + { + iObjectClass |= EBaseUnknown; + } + } + +void CUpnpObjectLite::Round3( TPtrC8 aString ) + { + if( aString.Compare( KImageItem ) == 0 ) + { + iObjectClass |= EBaseImageItem; + } + else if( aString.Compare( KAudioItem ) == 0 ) + { + iObjectClass |= EBaseMusicItem; + } + else if( aString.Compare( KVideoItem ) == 0 ) + { + iObjectClass |= EBaseVideoItem; + } + else if( aString.Compare( KPlaylistItem ) == 0 ) + { + iObjectClass |= EBasePlaylistItem; + } + else if( aString.Compare( KStorageFolder ) == 0 ) + { + iObjectClass |= EStorageFolder; + } + else if( aString.Compare( KPlaylistContainer ) == 0 ) + { + iObjectClass |= EPlaylistContainer; + } + else + { + + } + } + +void CUpnpObjectLite::Round4( TPtrC8 aString ) + { + if( aString.Compare( KMusicTrack ) == 0 ) + { + iObjectClass |= EMusicTrack; + } + else if( aString.Compare( KPhoto ) == 0 ) + { + iObjectClass |= EPhoto; + } + else if( aString.Compare( KVideo ) == 0 ) + { + iObjectClass |= EMovie; + } + else if( aString.Compare( KMusicAlbum ) == 0 ) + { + iObjectClass |= EMusicAlbum; + } + else + { + + } + } + +// end of file + +