diff -r 000000000000 -r dd21522fd290 browserutilities/downloadmgr/DownloadMgrServEng/Src/DownloadDataServ.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/browserutilities/downloadmgr/DownloadMgrServEng/Src/DownloadDataServ.cpp Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,533 @@ +/* +* Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: ?Description +* +*/ + + + +// INCLUDE FILES +#include +#include "DownloadDataServ.h" + + +// CONSTANTS + + +// --------------------------------------------------------- +// CMediaDataServ::NewL() +// Two-phase Constructor - Creates object from stream +// --------------------------------------------------------- +// +CMediaDataServ* CMediaDataServ::NewL(RReadStream& aStreamData) + { + CMediaDataServ* data = new (ELeave) CMediaDataServ(); + CleanupStack::PushL(data); + data->InternalizeL(aStreamData); + CleanupStack::Pop(); //data + return data; + } + +// --------------------------------------------------------- +// CMediaDataServ::NewL() +// --------------------------------------------------------- +// +CMediaDataServ* CMediaDataServ::NewL(const TDesC8& aStreamData) + { + CMediaDataServ* data = new (ELeave) CMediaDataServ(); + CleanupStack::PushL( data ); + RDesReadStream stream(aStreamData); + CleanupClosePushL(stream); + data->InternalizeL(stream); + CleanupStack::PopAndDestroy(); //stream + CleanupStack::Pop(); //data + return data; + } + +// --------------------------------------------------------- +// CMediaDataServ::~CMediaDataServ() +// --------------------------------------------------------- +// +CMediaDataServ::~CMediaDataServ() + { + delete iName; + delete iUrl; + delete iTypes; + delete iIcon; + delete iSourceUri; + delete iRedirUrl; + delete iDestFilename; + delete iTempFilename; + } + +// CMediaDataServ::Bytes() +// --------------------------------------------------------- +// +TInt CMediaDataServ::Bytes() const + { + return 0; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetNameL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetNameL( const TDesC& aName ) + { + return SetStringAttrL( iName, aName, COD_NAME_MAX_LEN ); + } + +// --------------------------------------------------------- +// CMediaDataServ::SetUrlL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetUrlL( const TDesC8& aUrl ) + { + return SetStringAttrL( iUrl, aUrl, COD_URL_MAX_LEN ); + } + +// --------------------------------------------------------- +// CMediaDataServ::SetSize() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetSize( TUint aSize ) + { + if( aSize <= 0 ) + { + return EFalse; + } + iSize = aSize; + return ETrue; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetTypeL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetTypeL( const TDesC8& aType ) + { + // Backwards-compatible deprecated method. + iTypes->Reset(); // Replace all, support only one type. + return AddTypeL( aType ); + } + +// --------------------------------------------------------- +// CMediaDataServ::AddTypeL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::AddTypeL( const TDesC8& aType ) + { + if ( aType.Length() > COD_TYPE_MAX_LEN || !aType.Length() ) + { + return EFalse; + } + HBufC8* type8 = aType.AllocLC(); + iTypes->AppendL( *type8 ); + CleanupStack::PopAndDestroy(); //type8 + return ETrue; + } + +// --------------------------------------------------------- +// CMediaDataServ::ResetTypes() +// --------------------------------------------------------- +// +void CMediaDataServ::ResetTypes() + { + iTypes->Reset(); + } + +// --------------------------------------------------------- +// CMediaDataServ::SetIconL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetIconL( const TDesC8& aIcon ) + { + return SetStringAttrL( iIcon, aIcon, COD_ICON_MAX_LEN ); + } + +// --------------------------------------------------------- +// CMediaDataServ::SetSourceUriL() +// --------------------------------------------------------- +// +void CMediaDataServ::SetSourceUriL( const TDesC8& aSourceUri ) + { + HBufC8* buf = aSourceUri.AllocL(); + delete iSourceUri; + iSourceUri = buf; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetProgressiveDownload() +// --------------------------------------------------------- +// +void CMediaDataServ::SetProgressiveDownload( TBool aProgressiveDl ) + { + iProgressiveDl = aProgressiveDl; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetState() +// --------------------------------------------------------- +// +void CMediaDataServ::SetState( TMediaObjectState aState ) + { + iState = aState; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetResult() +// --------------------------------------------------------- +// +void CMediaDataServ::SetResult( TInt aResult ) + { + iResult = aResult; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetRedirUrlL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetRedirUrlL( const TDesC8& aRedirUrl ) + { + return SetStringAttrL( iRedirUrl, aRedirUrl, COD_URL_MAX_LEN ); + } + +// --------------------------------------------------------- +// CMediaDataServ::SetMethod() +// --------------------------------------------------------- +// +void CMediaDataServ::SetMethod( TInt aMethod ) + { + iMethod = aMethod; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetRedirected() +// --------------------------------------------------------- +// +void CMediaDataServ::SetRedirected( TBool aRedirected ) + { + iRedirected = aRedirected; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetDestFilenameL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetDestFilenameL( const TDesC& aDestFilename ) + { + return SetStringAttrL( iDestFilename, aDestFilename, KMaxFileName ); + } + +// --------------------------------------------------------- +// CMediaDataServ::SetDownloadedSize() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetDownloadedSize( TInt aDownloadedSize ) + { + if( aDownloadedSize <= 0 ) + { + return EFalse; + } + iDownloadedSize = aDownloadedSize; + return ETrue; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetDesRemovable() +// --------------------------------------------------------- +// +void CMediaDataServ::SetDesRemovable( TBool aDesRemovable ) + { + iDesRemovable = aDesRemovable; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetLastErrorId() +// --------------------------------------------------------- +// +void CMediaDataServ::SetLastErrorId( TInt aLastErrorId ) + { + iLastErrorId = aLastErrorId; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetGlobalErrorId() +// --------------------------------------------------------- +// +void CMediaDataServ::SetGlobalErrorId( TInt aGlobalErrorId ) + { + iGlobalErrorId = aGlobalErrorId; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetPausable() +// --------------------------------------------------------- +// +void CMediaDataServ::SetPausable( TBool aPausable ) + { + iPausable = aPausable; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetStringAttrL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetStringAttrL +( HBufC*& aBuf, const TDesC& aString, TInt aMaxLength ) + { + if ( aString.Length() > aMaxLength ) + { + return EFalse; + } + HBufC* buf = aString.AllocL(); + delete aBuf; + aBuf = buf; + return ETrue; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetStringAttrL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetStringAttrL +( HBufC8*& aBuf, const TDesC& aString, TInt aMaxLength ) + { + if ( aString.Length() > aMaxLength ) + { + return EFalse; + } + + HBufC8* buf = HBufC8::NewL( aString.Length() ); + buf->Des().Copy( aString ); + delete aBuf; + aBuf = buf; + return ETrue; + } + +// --------------------------------------------------------- +// CMediaDataServ::SetStringAttrL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetStringAttrL +( HBufC8*& aBuf, const TDesC8& aString, TInt aMaxLength ) + { + if ( aString.Length() > aMaxLength ) + { + return EFalse; + } + HBufC8* buf = aString.AllocL(); + delete aBuf; + aBuf = buf; + return ETrue; + } + +// --------------------------------------------------------- +// CMediaDataServ::ExternalizeL() +// --------------------------------------------------------- +// +void CMediaDataServ::ExternalizeL(RWriteStream& /*aStream*/) const + { + } + +// --------------------------------------------------------- +// CMediaDataServ::InternalizeL() +// --------------------------------------------------------- +// +void CMediaDataServ::InternalizeL(RReadStream& aStream) + { + iName = HBufC::NewL(aStream, COD_NAME_MAX_LEN); + iUrl = HBufC8::NewL(aStream, COD_URL_MAX_LEN); + iSize = aStream.ReadUint32L(); + + // Number of elements in iTypes array + TInt count = aStream.ReadInt32L(); + // Fill elements of iTypes array + iTypes = new (ELeave) CDesC8ArrayFlat( KTypeGranularity ); + for (TInt index = 0; index < count; ++index) + { + HBufC8* des8 = HBufC8::NewLC(aStream, COD_TYPE_MAX_LEN); + iTypes->AppendL(*des8); + CleanupStack::Pop(); //des8 + } + + iIcon = HBufC8::NewL(aStream, COD_ICON_MAX_LEN); + iSourceUri = HBufC8::NewL(aStream, COD_URL_MAX_LEN); + iProgressiveDl = aStream.ReadInt32L(); + iState = static_cast (aStream.ReadInt32L()); + iResult = aStream.ReadInt32L(); + iRedirUrl = HBufC8::NewL(aStream, COD_URL_MAX_LEN); + iMethod = aStream.ReadInt32L(); + iRedirected = aStream.ReadInt32L(); + iDestFilename = HBufC::NewL(aStream, KMaxFileName); + iDownloadedSize = aStream.ReadInt32L(); + iDesRemovable = aStream.ReadInt32L(); + iLastErrorId = aStream.ReadInt32L(); + iGlobalErrorId = aStream.ReadInt32L(); + iPausable = aStream.ReadInt32L(); + + + iTempFilename = HBufC::NewL(KMaxFileName); + } + +// --------------------------------------------------------- +// CMediaDataServ::SetTempFilenameL() +// --------------------------------------------------------- +// +TBool CMediaDataServ::SetTempFilenameL( const TDesC& aTempFilename ) + { + return SetStringAttrL( iTempFilename, aTempFilename, KMaxFileName ); + } + +// --------------------------------------------------------- +// CDownloadDataServ::NewL() +// --------------------------------------------------------- +// +CDownloadDataServ* CDownloadDataServ::NewL(const TDesC8& aStreamData) + { + CDownloadDataServ* data = new (ELeave) CDownloadDataServ(); + CleanupStack::PushL( data ); + RDesReadStream stream(aStreamData); + CleanupClosePushL(stream); + data->InternalizeL(stream); + CleanupStack::PopAndDestroy(); //stream + CleanupStack::Pop(); //data + return data; + } + +// --------------------------------------------------------- +// CDownloadDataServ::~CDownloadDataServ() +// --------------------------------------------------------- +// +CDownloadDataServ::~CDownloadDataServ() + { + delete iName; + delete iIcon; + delete iUpdatedDDUri; + + iMediaArray.ResetAndDestroy(); + } + +// --------------------------------------------------------- +// CDownloadDataServ::operator[] +// --------------------------------------------------------- +// +CMediaDataBase* CDownloadDataServ::operator[]( TInt aIndex ) + { + //Check if the media object exits at specified index. Return the same if it is. + if( aIndex > 0 && aIndex <= iMediaArray.Count() ) + { + return iMediaArray[aIndex-1]; + } + return NULL; + } + +// --------------------------------------------------------- +// CDownloadDataServ::operator[] +// --------------------------------------------------------- +// +CMediaDataBase* CDownloadDataServ::operator[]( TInt aIndex ) const + { + //Check if the media object exits at specified index. Return the same if it is. + if( aIndex > 0 && aIndex <= iMediaArray.Count() ) + { + return iMediaArray[aIndex-1]; + } + return NULL; + } + +// --------------------------------------------------------- +// CDownloadDataServ::InternalizeL() +// --------------------------------------------------------- +// +void CDownloadDataServ::InternalizeL(RReadStream& aStream) + { + iName = HBufC::NewL(aStream, COD_NAME_MAX_LEN); + iSize = aStream.ReadUint32L(); + iIcon = HBufC8::NewL(aStream, COD_ICON_MAX_LEN); + iUpdatedDDUri = HBufC8::NewL(aStream, COD_URL_MAX_LEN); + + // iMediaObjects array elements + iMediaArray.Reset(); + TInt count = aStream.ReadInt32L(); + for (TInt index = 0; index < count; ++index) + { + CMediaDataServ* mediaData = CMediaDataServ::NewL(aStream); + iMediaArray.AppendL(mediaData); + } + } + +// --------------------------------------------------------- +// CDownloadDataServ::SetStringAttrL() +// --------------------------------------------------------- +// +TBool CDownloadDataServ::SetStringAttrL +( HBufC*& aBuf, const TDesC& aString, TInt aMaxLength ) + { + if ( aString.Length() > aMaxLength ) + { + return EFalse; + } + HBufC* buf = aString.AllocL(); + delete aBuf; + aBuf = buf; + return ETrue; + } + +// --------------------------------------------------------- +// CDownloadDataServ::SetStringAttrL() +// --------------------------------------------------------- +// +TBool CDownloadDataServ::SetStringAttrL +( HBufC8*& aBuf, const TDesC& aString, TInt aMaxLength ) + { + if ( aString.Length() > aMaxLength ) + { + return EFalse; + } + + HBufC8* buf = HBufC8::NewL( aString.Length() ); + buf->Des().Copy( aString ); + delete aBuf; + aBuf = buf; + return ETrue; + } + +// --------------------------------------------------------- +// CDownloadDataServ::SetStringAttrL() +// --------------------------------------------------------- +// +TBool CDownloadDataServ::SetStringAttrL +( HBufC8*& aBuf, const TDesC8& aString, TInt aMaxLength ) + { + if ( aString.Length() > aMaxLength ) + { + return EFalse; + } + HBufC8* buf = aString.AllocL(); + delete aBuf; + aBuf = buf; + return ETrue; + } + +// --------------------------------------------------------- +// CDownloadDataServ::SetNameL() +// --------------------------------------------------------- +// +TBool CDownloadDataServ::SetNameL( const TDesC& aName ) + { + return SetStringAttrL( iName, aName, COD_NAME_MAX_LEN ); + } + +// End of File