mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/ClientProgDLSource.cpp
changeset 16 43d09473c595
parent 14 80975da52420
child 22 128eb6a32b84
--- a/mmfenh/enhancedmediaclient/Client/src/Components/ClientProgDLSource/ClientProgDLSource.cpp	Mon May 03 12:59:52 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,569 +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 the ClientProgDLSource class.
-*
-*/
-
-
-#include <e32std.h>
-#include <MCustomCommand.h>
-#include <SourceControlObserver.h>
-#include "ClientProgDLSource.h"
-#include "EventNotifier.h"
-#include "EventAO.h"
-#include "ErrorCode.h"
-#include "ProgDLSourceUid.h"
-
-#define RETURN_IF_ERROR(x) if(x != KErrNone) return x
-
-// CONSTANTS
-const TInt KLocalFile = -1;
-const TInt KTranferRateMonitorFrequency = 2;
-const TInt KFileSizeChangeDelta = 10000;
-const TInt KNofityAfterPercentage = 5;
-
-using namespace multimedia;
-
-CClientProgDLSource::CClientProgDLSource()
-    {
-    iSourceState = CMultimediaDataSource::ECLOSED;
-    isDownloadComplete = false;
-    iProgressiveMode = false;
-    }
-
-CClientProgDLSource::~CClientProgDLSource()
-    {
-    delete iEventNotifier;
-    delete iMonitor;
-    delete iFileName;
-    
-    if(iStateEvent->IsActive())
-        {
-        iStateEvent->Cancel();
-        }
-    
-    delete iStateEvent;
-    }
-
-TInt CClientProgDLSource::PostConstructor()
-    {
-    TInt status(KErrNone);
-    // Make sure this doesn't get called second time around.
-    if ( !iEventNotifier )
-        {
-        TRAP(status, iEventNotifier = CEventNotifier::NewL());
-        }
-    
-    RETURN_IF_ERROR(status);
-    
-    TRAP(status, iStateEvent  = CEventAO::NewL(*this)); 
-    
-    return status;
-    }
-
-TInt CClientProgDLSource::AddObserver( MControlObserver& aObserver )
-    {
-    return iEventNotifier->AddObserver( aObserver );
-    }
-
-TInt CClientProgDLSource::RemoveObserver( MControlObserver& aObserver )
-    {
-    return iEventNotifier->RemoveObserver( aObserver );
-    }
-
-TUid CClientProgDLSource::Type()
-    {
-    return KProgDLSourceControl;
-    }
-
-TControlType CClientProgDLSource::ControlType()
-    {
-	return ESourceControl;
-    }
-    
-TInt CClientProgDLSource::GetSize( TUint& aSize )
-    {
-    TInt status(KErrNone);
-    aSize = iSourceSize;
-    return status;
-    }
-
-TInt CClientProgDLSource::GetMimeType( TDes8& aMimeType )
-    {
-    TInt status = iDownloadGateway->GetMimeType(iDownloadId,aMimeType);
-    return status;
-    }
-
-TInt CClientProgDLSource::Close()
-    {
-    TInt status(KErrNone);
-    if(iMonitor)
-        {
-        iMonitor->Stop();
-        }
-    // Reset the Progressive Mode flag always
-    iDownloadGateway->SetProgressiveMode(iDownloadId,EFalse);
-    iProgressiveMode = EFalse;
-    iDownloadId = 0;
-    iCurrentBytes = 0;
-    isDownloadPaused = EFalse;
-    isDownloadComplete = EFalse;
-    iCurrentSize = 0;
-    iSourceSize = 0;
-    iServerSourceExists = EFalse;
-    return status;
-    }
-
-TInt CClientProgDLSource::SetDownloadGateway(CDownloadGateway* aDownloadGateway)
-    {
-    iDownloadGateway = aDownloadGateway;
-    return KErrNone;
-    }
-
-
-TInt CClientProgDLSource::Open(const TDesC& aFileName,TInt32 aDLTxId )
-    {
-    TInt status(KErrNone);
-    if(aDLTxId != KLocalFile)
-        {
-        status = iDownloadGateway->ConnectToDownload(aDLTxId,*this,KNullUid);
-        if(status == KErrNone)
-        	{
-		    iDownloadId = aDLTxId;
-		    isDownloadComplete = EFalse;
-	        //Gets current downloaded size
-	        status = iDownloadGateway->GetDownloadSize(iDownloadId,iSourceSize);
-	        RETURN_IF_ERROR(status);
-	    	}
-	    else
-	    	{
-	    	iDownloadId = 0;	
-	    	return status;	
-	    	}	
-        }
-    else
-        {
-        isDownloadComplete = ETrue;
-        }        
-    
-    if(iFileName)
-        {
-        delete iFileName;
-        iFileName = NULL;
-        }
-
-    TRAP(status,iFileName = HBufC::NewL(aFileName.Size()));
-	
-	if(!status)
-	    {
-	    TPtr des = iFileName->Des();
-	    des.Copy(aFileName);
-	    }    
-    
-    return status;
-    }
-
-TInt CClientProgDLSource::MoveFile(const TDesC& aDestFileName )
-    {
-    TInt status(KErrNone);
-    iDestFileName.Copy(aDestFileName);
-    status = iDownloadGateway->MoveFile(iDownloadId,aDestFileName);
-    return status;
-    }
-
-TInt CClientProgDLSource::IsDownloadComplete(TBool& aBool)
-    {
-    TInt status(KErrNone);
-    
-    TDownloadStatus dlStatus;
-    status = iDownloadGateway->GetDownloadStatus(iDownloadId,dlStatus);
-    if(dlStatus == ECompleted)
-        {
-        aBool = true;
-        }
-    else
-        {
-        aBool = false;
-        }
-            
-    return status;
-    }
-
-TInt CClientProgDLSource::GetPercentageDownloaded(TUint& aPercent)
-    {
-    TInt status(KErrNone);
-    TUint curSize;
-    TUint fullSize;
-    if(!isDownloadComplete)
-        {
-        status = iDownloadGateway->GetCurrentSize(iDownloadId,curSize);
-        RETURN_IF_ERROR(status);
-        status = iDownloadGateway->GetDownloadSize(iDownloadId,fullSize);    
-        RETURN_IF_ERROR(status);
-        }
-    else
-        {
-        curSize = iCurrentSize;
-        fullSize = iSourceSize;
-        }
-    
-    if(fullSize)
-        {
-        aPercent = (curSize*100/fullSize);
-        }
-    else
-        {
-        aPercent = 0;
-        }        
-    return status;
-    }
-
-TInt CClientProgDLSource::GetDownloadingRate(TUint& aRate)
-    {
-    TInt status(KErrNone);
-    if(iMonitor)
-        {
-        aRate = iMonitor->TransferRate();
-        }
-    else
-        {
-        status = KErrNotFound;
-        }
-    return status;
-    }    
-
-TInt CClientProgDLSource::GetCurrentFileSize( TUint& aSize )
-    {
-    TInt status(KErrNotFound);
-    if(!isDownloadComplete)
-        {
-        status = iDownloadGateway->GetCurrentSize(iDownloadId,aSize);
-        }
-    else
-        {
-        iCurrentSize = iSourceSize;
-        status = KErrNone;
-        }
-    return status;
-    }
-     
-TInt CClientProgDLSource::GetExpectedFileSize( TUint& aSize )
-    {
-    TInt status(KErrNotFound);
-    if(!isDownloadComplete)
-        {
-        status = iDownloadGateway->GetDownloadSize(iDownloadId,aSize);
-        }
-    else
-        {
-        aSize = iSourceSize;
-        status = KErrNone;
-        }
-    return status;
-    }
-    
-MProgDLSource::TDownloadStatus CClientProgDLSource::GetDownloadStatus()
-    {
-    MProgDLSource::TDownloadStatus dlStatus;
-    iDownloadGateway->GetDownloadStatus(iDownloadId,dlStatus);
-    return dlStatus;
-    }
-    
-
-TInt CClientProgDLSource::GetPercentageBuffered(TUint& aPercent)
-    {
-    //Source Custom Command
-    TPckgBuf<TUint> pckg;
-    if(iServerSourceExists)
-        {
-        iCustomCommand->CustomCommandSync( iSourceHandle, EGetPercentageBuffered, KNullDesC8, KNullDesC8, pckg );
-        aPercent = pckg();
-        return KErrNone;
-        }
-    else
-        {
-        aPercent = 0;
-        return KErrNotFound;    
-        }
-    }            
-
-TInt CClientProgDLSource::GetBitRate(TUint& aRate)
-    {
-    //Source Custom Command
-    TPckgBuf<TUint> pckg;
-    if(iServerSourceExists)
-        {
-        iCustomCommand->CustomCommandSync( iSourceHandle, EGetBitRate, KNullDesC8, KNullDesC8, pckg );
-        aRate = pckg();
-        return KErrNone;
-        }
-    else
-        {
-        aRate = 0;
-        return KErrNotFound;
-        }
-    }
-
-TInt CClientProgDLSource::FileName(TPtr& aFileName)
-    {
-    TInt status(KErrNone);
-    aFileName.Set(iFileName->Des());
-    return status;
-    }
-
-
-TInt CClientProgDLSource::CancelDownload()
-    {
-    TInt status(KErrNone);
-    status = iDownloadGateway->DeleteDownload(iDownloadId);
-    return status;
-    }
-
-TInt CClientProgDLSource::ResumeDownload()
-    {
-    TInt status(KErrNone);
-    if(isDownloadPaused)
-        {
-        iDownloadGateway->ResumeDownload(iDownloadId);
-        }
-    return status;
-    }    
-
-void CClientProgDLSource::ServerSourceCreated( MCustomCommand& aCustomCommand,
-                                                   TMMFMessageDestination& aSourceHandle )
-    {
-    iServerSourceExists = ETrue;
-    iCustomCommand = &aCustomCommand;
-    iSourceHandle = aSourceHandle;
-    
-    if(!isDownloadComplete)
-        {
-        TRAPD(err1,iMonitor = CTransferRateMonitor::NewL(*this, KTranferRateMonitorFrequency, KFileSizeChangeDelta));
-        if(!err1)
-    	    {
-    		iMonitor->Start();
-    		}
-    	
-        // Send data to server source
-        TPckgBuf<TInt> pckg(iSourceSize);
-        iCustomCommand->CustomCommandSync( iSourceHandle, ESetActualSize, pckg, KNullDesC8 );
-        
-        iStateEvent->SetActive();
-        iStatePckg() = iSourceState;	  
-        iCustomCommand->CustomCommandAsync(
-            iSourceHandle,
-            (TInt)EGetSourceState,
-            iStatePckg,
-            KNullDesC8,
-            iStatePckg,
-            iStateEvent->iStatus);
-            
-         }
-     else
-        {
-        iCustomCommand->CustomCommandSync( iSourceHandle, ESetDownloadState, KNullDesC8, KNullDesC8 );        
-        }
-    }
-
-void CClientProgDLSource::ServerSourceDeleted()
-    {
-#ifdef _DEBUG
-    RDebug::Print(_L("CClientProgDLSource::ServerSourceDeleted()"));    
-#endif    
-    iServerSourceExists = EFalse;
-    iCustomCommand = NULL;
-    
-    if(iMonitor)
-        {
-        iMonitor->Stop();
-        }
-    }
-
-TBool CClientProgDLSource::IsEncrypted()
-    {
-    return EFalse;
-    }
-    
-TUid CClientProgDLSource::GetSourceUid()
-    {
-    return KMmfProgDLSource;
-    }
-    
-TInt CClientProgDLSource::GetHeaderData(TPtr& /*aPtr*/)
-    {
-    return KErrNotSupported;
-    }
-    
-void CClientProgDLSource::MoveFileComplete(TInt aError)
-    {
-    if(iServerSourceExists)
-        {
-        TPtr des = iFileName->Des();
-        if(aError == KErrNone)
-            {
-    	    des.Copy(iDestFileName);
-            }
-	    else
-            {
-            iDownloadGateway->GetLocalFileName(iDownloadId,des);
-            }
-        TPckgBuf<TFileName> pckg(iDestFileName);
-        iCustomCommand->CustomCommandSync( iSourceHandle, ESetUpdateFileName, pckg, KNullDesC8 );
-        }
-    
-    CErrorCode* event1 = new CErrorCode( aError );       
-    iEventNotifier->Event(this,MSourceControlObserver::KFileMoveCompleteEvent,event1);
-    }
-
-void CClientProgDLSource::Event(TDownloadStatus aStatus)
-    {   
-#ifdef _DEBUG
-    RDebug::Print(_L("CClientProgDLSource::Event DownloadStatus[%d]"),aStatus);
-#endif            
-
-    switch(aStatus)
-        {
-            case ECompleted:
-                {
-                if(iMonitor)
-                    {
-                    iMonitor->Stop();	
-                    }
-                TUint size(0);
-                GetCurrentFileSize(size);
-                TInt value = size;
-                TPckgBuf<TInt> pckg(value);
-				if(iServerSourceExists)
-				{
-                	if (iSourceState != CMultimediaDataSource::ESTOPPED)
-                    	{
-	                    iCustomCommand->CustomCommandSync( iSourceHandle, ESetDownloadSize, pckg, KNullDesC8 );
-    	                }
-        	        iCustomCommand->CustomCommandSync( iSourceHandle, ESetDownloadState, KNullDesC8, KNullDesC8 );
-				}
-                isDownloadComplete = ETrue;               
-                break;                    
-                }
-            case EStarted:
-                {
-                isDownloadPaused = EFalse;    
-                break;
-                }
-            case EPaused:
-                {
-                isDownloadPaused = ETrue;
-                break;    
-                }
-            case EDeleted:
-                {
-                if(iMonitor)
-                    {
-                    iMonitor->Stop();
-                    }
-                break;
-                }
-
-            case EUnknown:
-                break;
-                
-        }
-        //Send only Known Events
-        if(aStatus != EUnknown)
-            {
-            CErrorCode* event1 = new CErrorCode( KErrNone );       
-            iEventNotifier->Event(this,MSourceControlObserver::KDownloadStatusChangedEvent,event1); 
-            }
-    }
-
-TInt CClientProgDLSource::GetCurrentSize( TUint& aCurrentSize )
-    {
-    //RDebug::Print(_L("CClientProgDLSource::GetCurrentSize"));			
-    TUint value(0);
-    GetExpectedFileSize(value);
-    
-    GetCurrentFileSize(aCurrentSize);
-    
-    if(aCurrentSize - iCurrentBytes > ((KNofityAfterPercentage/100) * value)) //Currently checking for 5%
-        {
-            iCurrentBytes = aCurrentSize;
-            CErrorCode* event1 = new CErrorCode( KErrNone );       
-            iEventNotifier->Event(this,MSourceControlObserver::KPercentageDownloadedChangedEvent,event1);
-        }
-    
-    iCurrentSize = aCurrentSize;
-    
-    if ( iServerSourceExists && iSourceState != CMultimediaDataSource::ESTOPPED)
-        {
-        // Send data to server source
-        
-        TPckgBuf<TInt> pckg(iCurrentSize);
-        iCustomCommand->CustomCommandSync( iSourceHandle, ESetDownloadSize, pckg, KNullDesC8 );
-        
-        }			
-#ifdef _DEBUG
-    RDebug::Print(_L("CClientProgDLSource::GetCurrentSize:[%d]"), aCurrentSize);	
-#endif    
-    
-    return KErrNone;			
-    }
-
-void CClientProgDLSource::TransferRateChanged()
-    {
-#ifdef _DEBUG    
-    RDebug::Print(_L("CClientProgDLSource::TransferRateChanged:[%d]"), iMonitor->TransferRate());
-#endif    
-    if ( iServerSourceExists  && !isDownloadComplete && iSourceState != CMultimediaDataSource::ESTOPPED)
-        {
-        // Send data to server source
-        
-        TPckgBuf<TUint> pckg1(iMonitor->TransferRate());
-        iCustomCommand->CustomCommandSync( iSourceHandle, EDownloadRate, pckg1, KNullDesC8 );
-        
-        }			
-    }
-
-void CClientProgDLSource::SourceStateChanged()		
-    {
-#ifdef _DEBUG
-    RDebug::Print(_L("CClientProgDLSource::SourceStateChanged() :PrevState[%d] NewState[%d]"), iSourceState,iStatePckg());
-#endif    
-    iSourceState = iStatePckg();
-    
-    if(iSourceState == CMultimediaDataSource::ESTOPPED || iSourceState == CMultimediaDataSource::ECLOSED)        
-        {
-        //iDownloadGateway->SetProgressiveMode(iDownloadId,EFalse);
-        iProgressiveMode = EFalse;
-        }
-    else if(!iProgressiveMode && !isDownloadComplete)
-        {
-        iDownloadGateway->SetProgressiveMode(iDownloadId,ETrue);
-        TPtr ptrFileName = iFileName->Des();
-        iDownloadGateway->SetLocalFileName( iDownloadId, ptrFileName );
-        iProgressiveMode = ETrue;
-        }
-    
-        
-    if(iStateEvent->Error() != KErrDied && iServerSourceExists)
-        {
-        iStateEvent->SetActive();	    
-        iCustomCommand->CustomCommandAsync(
-            iSourceHandle,
-            (TInt)EGetSourceState,
-            iStatePckg,
-            KNullDesC8,
-            iStatePckg,
-            iStateEvent->iStatus);    
-        }                               
-    }
-// End of file