--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/upnpsharing/upnpdlnaprofiler/src/upnpresparameters.cpp Thu Dec 17 08:52:00 2009 +0200
@@ -0,0 +1,337 @@
+/*
+* Copyright (c) 2006-2007 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: Implementation file of CUpnpResParameters class.
+* CUpnpResParameters is created to encapsulate information
+* that is needed in a contentdirectory res element.
+*
+*/
+
+
+
+
+
+
+// system includes
+
+// user includes
+#include "upnpresparameters.h"
+#include "upnpdlnaprofiler.h"
+
+_LIT( KComponentLogfile, "dlnaprofiler.txt");
+#include "upnplog.h"
+
+
+// constants
+const TInt KMaxTintLength = 20; // max. TInt string representation length.
+const TInt KMinutesInHour = 60;
+const TInt KSecondsInMinute = 60;
+const TInt KSecondsInHour = KMinutesInHour * KSecondsInMinute;
+
+const TInt KHourMaxLength = 5;
+const TInt KMinutesLength = 2;
+const TInt KSecondsLength = 2;
+
+_LIT( KResolutionDivider, "x" );
+_LIT( KTimeDivider, ":" );
+_LIT( KZero, "0" );
+
+
+// ======== LOCAL FUNCTIONS ========
+// NONE
+
+// ======== MEMBER FUNCTIONS ========
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters C++ constructor
+// --------------------------------------------------------------------------
+//
+CUpnpResParameters::CUpnpResParameters()
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters constructor" );
+ }
+
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::ConstructL
+// --------------------------------------------------------------------------
+//
+void CUpnpResParameters::ConstructL()
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::ConstructL" );
+ }
+
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::NewL
+// --------------------------------------------------------------------------
+//
+EXPORT_C CUpnpResParameters* CUpnpResParameters::NewL()
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::NewL" );
+ CUpnpResParameters* self = CUpnpResParameters::NewLC();
+ CleanupStack::Pop( self );
+ return self;
+ }
+
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::NewLC
+// --------------------------------------------------------------------------
+//
+EXPORT_C CUpnpResParameters* CUpnpResParameters::NewLC()
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::NewLC" );
+ CUpnpResParameters* self = new( ELeave ) CUpnpResParameters;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ return self;
+ }
+
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters destructor
+// --------------------------------------------------------------------------
+//
+CUpnpResParameters::~CUpnpResParameters()
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters destructor" );
+ delete iProtocolInfo;
+ delete iMimetype;
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::ProtocolInfo
+// --------------------------------------------------------------------------
+//
+EXPORT_C const TDesC8& CUpnpResParameters::ProtocolInfo() const
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::ProtocolInfo" );
+
+ if ( iProtocolInfo )
+ {
+ return *iProtocolInfo;
+ }
+
+ return KNullDesC8();
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::FileSizeL
+// --------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CUpnpResParameters::FileSizeL() const
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::FileSizeL" );
+ HBufC8* retval = NULL;
+
+ TBuf<KMaxTintLength> sizeOfFile;
+ sizeOfFile.Num( iFileSize );
+
+ retval = HBufC8::NewL( sizeOfFile.Length() );
+ retval->Des().Append( sizeOfFile );
+
+ return retval;
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::DurationL
+//
+// Requirement [7.3.22.1]: The syntax of the res@duration must be
+// compliant to the following definition:
+// duration = hours ":" minutes ":" seconds
+// hours = 1*5 DIGIT; 0-99999
+// minutes = 2 DIGIT ; 00-59
+// seconds = 2 DIGIT ["." 3 DIGIT] ; 00-59 (.000-.999)
+// --------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CUpnpResParameters::DurationL() const
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::DurationL" );
+ HBufC8* retval = NULL;
+
+ // Leave if the duration has invalid value
+ if( iDurationInSeconds < 0 )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ TInt hour = iDurationInSeconds / KSecondsInHour;
+ TInt min = (iDurationInSeconds % KSecondsInHour) / KSecondsInMinute;
+ TInt sec = (iDurationInSeconds % KSecondsInHour) % KSecondsInMinute;
+
+ // Leave if the duration is longer than allowed (99999h 99min 99sec)
+ if( hour >= 100000 )
+ {
+ User::Leave( KErrArgument );
+ }
+
+ // Convert TInt to TBuf
+ TBuf<KHourMaxLength> hours;
+ hours.Num( hour );
+ hours.Trim();
+
+ TBuf<2> minutes;
+ minutes.Num( min );
+
+ TBuf<2> seconds;
+ seconds.Num( sec );
+
+ retval = HBufC8::NewL( hours.Length() +
+ KTimeDivider().Length() +
+ KMinutesLength +
+ KTimeDivider().Length() +
+ KSecondsLength );
+
+ retval->Des().Append( hours );
+ retval->Des().Append( KTimeDivider() );
+ if( min < 10 )
+ {
+ retval->Des().Append( KZero() );
+ }
+ retval->Des().Append( minutes );
+ retval->Des().Append( KTimeDivider() );
+ if( sec < 10 )
+ {
+ retval->Des().Append( KZero() );
+ }
+ retval->Des().Append( seconds );
+
+ return retval;
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::ResolutionL
+// --------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CUpnpResParameters::ResolutionL() const
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::ResolutionL" );
+ HBufC8* retval = NULL;
+
+ TBuf<KMaxTintLength> width;
+ width.Num( iResolution.iWidth );
+
+ TBuf<KMaxTintLength> height;
+ height.Num( iResolution.iHeight );
+
+ retval = HBufC8::NewL( width.Length() +
+ KResolutionDivider().Length() +
+ height.Length() );
+
+ retval->Des().Append( width );
+ retval->Des().Append( KResolutionDivider() );
+ retval->Des().Append( height );
+
+ return retval;
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::IsImageFile
+// --------------------------------------------------------------------------
+//
+EXPORT_C TBool CUpnpResParameters::IsImageFile() const
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::IsImageFile" );
+ TBool retval = EFalse;
+
+ if ( iMimetype->Left( KMimeStartLength ).Compare( KImage() ) == 0 )
+ {
+ retval = ETrue;
+ }
+
+ return retval;
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::IsAudioOrVideoFile
+// --------------------------------------------------------------------------
+//
+EXPORT_C TBool CUpnpResParameters::IsAudioOrVideoFile() const
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::IsAudioOrVideoFile" );
+ TBool retval = EFalse;
+
+ if ( iMimetype->Left( KMimeStartLength ).Compare( KVideo() ) == 0 ||
+ iMimetype->Left( KMimeStartLength ).Compare( KAudio() ) == 0 )
+ {
+ retval = ETrue;
+ }
+
+ return retval;
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::SetProtocolInfoL
+// --------------------------------------------------------------------------
+//
+void CUpnpResParameters::SetProtocolInfoL( const TDesC8& aProtocolInfo )
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::SetProtocolInfoL" );
+ iProtocolInfo = aProtocolInfo.AllocL();
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::SetMimetypeL
+// --------------------------------------------------------------------------
+//
+void CUpnpResParameters::SetMimetypeL( const TDesC8& aMimetype )
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::SetMimetypeL" );
+ iMimetype = aMimetype.AllocL();
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::SetFileSize
+// --------------------------------------------------------------------------
+//
+void CUpnpResParameters::SetFileSize( TInt aFileSize )
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::SetFileSize" );
+ iFileSize = aFileSize;
+ }
+// --------------------------------------------------------------------------
+// CUpnpResParameters::SetResolution
+// --------------------------------------------------------------------------
+//
+void CUpnpResParameters::SetResolution( TSize aResolution )
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::SetResolution" );
+ iResolution = aResolution;
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::SetDurationInSeconds
+// --------------------------------------------------------------------------
+//
+void CUpnpResParameters::SetDurationInSeconds( TInt64 aDuration )
+ {
+ __LOG( "[UPnPDlnaProfiler] CUpnpResParameters::\
+SetDurationInSeconds" );
+ iDurationInSeconds = aDuration;
+ }
+
+// --------------------------------------------------------------------------
+// CUpnpResParameters::MimeType
+// --------------------------------------------------------------------------
+//
+const TDesC8& CUpnpResParameters::MimeType()
+ {
+ if ( iMimetype )
+ {
+ return *iMimetype;
+ }
+
+ return KNullDesC8();
+ }
+// end of file