diff -r a36789189b53 -r 095bea5f582e mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/DownloadGateway.cpp --- a/mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/DownloadGateway.cpp Thu Aug 19 10:26:11 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,273 +0,0 @@ -/* -* 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: Implementation of DownloadGateway class. -* -*/ - - -#include "DownloadGateway.h" -#include - -#define RETURN_IF_ERROR(x) if(x != KErrNone) return x - -using namespace multimedia; - -// CONSTANTS -CDownloadGateway::CDownloadGateway() - { - iDMgrConnected = EFalse; - iDownload = NULL; - iDownloadId = 0; - } - -CDownloadGateway::~CDownloadGateway() - { - if ( iDMgrConnected ) - { - iDownloadMgr.Close(); - } - } - -TInt CDownloadGateway::Initialize(TUid aClientUid) - { - TInt status(KErrNone); - if ( !iDMgrConnected ) - { - TRAP(status,iDownloadMgr.ConnectL( aClientUid, *this, EFalse )); - if(!status) - { - iDMgrConnected = ETrue; - } - } - return status; - } - -TInt CDownloadGateway::MoveFile( TInt aId, const TDesC& aDestFileName ) - { - TInt status(KErrNotFound); - // Check here if the download is complete and the Source is in Stopped State - if(iDownloadId == aId && iDownload) - { - status = iDownload->SetStringAttribute( EDlAttrDestFilename, aDestFileName ); - if(!status) - { - iDownload->Move(); - } - } - return status; - } - -TInt CDownloadGateway::ConnectToDownload(TInt aId, MDownloadGatewayObserver& aObserver, TUid /*aAppUid*/) - { - TInt status(KErrNotFound); - TRAP(status, iDownload = &(iDownloadMgr.AttachToDownloadL( aId ))); - if(status == KErrNone) - { - iObserver = &aObserver; - iDownloadId = aId; - } - else - { - iDownload = NULL; - } - return status; - } - -TInt CDownloadGateway::DisconnectFromDownload(TInt aId) - { - TInt status(KErrNotFound); - if(iDownloadId == aId && iDownload) - { - iDownload = NULL; - iDownloadId = 0; - status = KErrNone; - } - return status; - } - -TInt CDownloadGateway::GetMimeType(TInt aId, TDes8& aMimeType) - { - TInt status(KErrNotFound); - if(iDownloadId == aId && iDownload) - { - status = iDownload->GetStringAttribute( EDlAttrContentType, aMimeType ); - } - return status; - } - -TInt CDownloadGateway::GetCurrentSize( TInt aId, TUint& aSize ) - { - TInt status(KErrNotFound); - TInt32 value(0); - if(iDownloadId == aId && iDownload) - { - status = iDownload->GetIntAttribute( EDlAttrDownloadedSize, value ); - if(!status) - { - aSize = value; - } - } - return status; - } - -TInt CDownloadGateway::GetDownloadSize( TInt aId, TUint& aSize ) - { - TInt status(KErrNotFound); - TInt32 value(0); - if(iDownloadId == aId && iDownload) - { - status = iDownload->GetIntAttribute( EDlAttrLength, value ); - if(status == KErrNone) - { - aSize = value; - } - } - return status; - } - -TInt CDownloadGateway::GetDownloadStatus(TInt aId, MProgDLSource::TDownloadStatus& aStatus) - { - TInt status(KErrNotFound); - if(iDownloadId == aId && iDownload) - { - aStatus = iDownloadStatus; - } - return status; - } - -TInt CDownloadGateway::DeleteDownload(TInt aId) - { - TInt status(KErrNotFound); - if(iDownloadId == aId && iDownload) - { - status = iDownload->Delete(); - } - return status; - } - -TInt CDownloadGateway::ResumeDownload(TInt aId) - { - TInt status(KErrNotFound); - if(iDownloadId == aId && iDownload) - { - status = iDownload->Start(); - } - return status; - } - -TInt CDownloadGateway::SetProgressiveMode(TInt aId, TBool aMode) - { - TInt status(KErrNotFound); - if(iDownloadId == aId && iDownloadStatus != MProgDLSource::EDeleted && iDownload) - { - status = iDownload->SetBoolAttribute( EDlAttrProgressive, aMode ); - } - return status; - } - -TInt CDownloadGateway::SetLocalFileName( TInt aId, TDesC& aFilName ) - { - TInt status(KErrNotFound); - if( iDownloadId == aId && iDownload) - { - status = iDownload->SetStringAttribute( EDlAttrLocalFileName, aFilName ); - } - return status; - } - -TInt CDownloadGateway::GetLocalFileName( TInt aId, TDes& aFileName ) - { - TInt status(KErrNotFound); - if( iDownloadId == aId && iDownload) - { - status = iDownload->GetStringAttribute( EDlAttrDestFilename, aFileName ); - } - return status; - } - -void CDownloadGateway::HandleDMgrEventL( RHttpDownload& /*aDownload*/, THttpDownloadEvent aEvent ) - { -#ifdef _DEBUG - RDebug::Print(_L("CDownloadGateway::HandleDMgrEventL DownloadState[%d] ProgressState[%d]"),aEvent.iDownloadState,aEvent.iProgressState); -#endif - MProgDLSource::TDownloadStatus status; - - // When the new evnet is different in one of the states - // then the current event - if(iPrevEvent.iDownloadState != aEvent.iDownloadState) - { - switch(aEvent.iDownloadState) - { - case EHttpDlCreated: - status = MProgDLSource::EConnecting; - break; - case EHttpDlInprogress: - status = MProgDLSource::EStarted; - break; - case EHttpDlPaused: - status = MProgDLSource::EPaused; - break; - case EHttpDlCompleted: - status = MProgDLSource::ECompleted; - break; - case EHttpDlFailed: - status = MProgDLSource::EFailed; - break; - case EHttpDlDeleting: - status = MProgDLSource::EDeleted; - break; - default: - status = MProgDLSource::EUnknown; - break; - }; - - iDownloadStatus = status; - iObserver->Event(status); - } - - if(iPrevEvent.iProgressState != aEvent.iProgressState) - { - switch(aEvent.iProgressState) - { - - case EHttpProgContentFileMoved: - { - TInt32 value(0); - TInt err = iDownload->GetIntAttribute( EDlAttrErrorId, value ); -#ifdef _DEBUG - RDebug::Print(_L("Delete File Code 2[%d][%d]"),err,value); -#endif - if(!err) - { - iObserver->MoveFileComplete(value); - } - } - break; - case EHttpProgCodLoadEnd: - // Case for COD download complete - iDownloadStatus = MProgDLSource::ECompleted; - iObserver->Event(MProgDLSource::ECompleted); - break; - case EHttpProgContentFileMovedAndDestFNChanged: - { - iObserver->MoveFileComplete(KErrAlreadyExists); - break; - } - }; - } - - iPrevEvent = aEvent; - } - -// End of file