browserui/browser/BrowserAppSrc/BrowserProgressIndicator.cpp
changeset 51 48e827313edd
parent 37 481242ead638
child 53 f427d27b98d8
--- a/browserui/browser/BrowserAppSrc/BrowserProgressIndicator.cpp	Tue Feb 02 00:12:41 2010 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,493 +0,0 @@
-/*
-* Copyright (c) 2002 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: 
-*
-*
-*/
-
-
-// INCLUDE FILES
-
-#include <AknAppUi.h>
-#include <e32math.h>
-#include <BrowserNG.rsg>
-#include <FeatMgr.h>
-#include <stringloader.h>
-
-// USER INCLUDES
-
-#include "Display.h"
-#include "ApiProvider.h"
-#include "CommonConstants.h"  // for View Ids
-#include "BrowserProgressIndicator.h"
-#include "Logger.h"
-#include "AknUtils.h"
-
-// CONSTANTS
-
-const TInt KGranularity = 4;
-const TUint KkBLimit = 999;
-const TUint KOnekB = 1024;
-const TUint KOneMB = 1024 * 1024;
-const TInt KMaxPercentage = 100;
-const TInt KMBLimit = 10;
-const TInt KMaxMBLimit = 100;
-_LIT(text,"(%S) %S ");
-_LIT(twoDecimals,"%2.2lf");
-_LIT(oneDecimal, "%2.1lf");
-_LIT(noDecimals, "%d");
-
-// ================= MEMBER FUNCTIONS =======================
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::NewL
-// ---------------------------------------------------------
-//
-CBrowserProgressIndicator* CBrowserProgressIndicator::NewL(
-        MApiProvider& aApiProvider )
-	{
-	CBrowserProgressIndicator* self = new (ELeave)
-	    CBrowserProgressIndicator( aApiProvider );
-    CleanupStack::PushL( self );
-    self->ConstructL();
-    CleanupStack::Pop();
-    return self;
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::ConstructL
-// ---------------------------------------------------------
-//
-void CBrowserProgressIndicator::ConstructL()
-    {
-    iProgressData = new(ELeave) CArrayFixFlat<TProgressData>( KGranularity );
-    iInitialDownloadIndicatorState = EFalse;
-
-    HBufC* myKb = StringLoader::LoadL( R_WML_UNIT_KB );
-    iMyKb = myKb->Alloc();
-    delete myKb;
-
-    HBufC* myMb = StringLoader::LoadL( R_WML_UNIT_MB );
-    iMyMb = myMb->Alloc();
-    delete myMb;
-    }
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::CBrowserProgressIndicator
-// ---------------------------------------------------------
-//
-CBrowserProgressIndicator::CBrowserProgressIndicator(
-        MApiProvider& aApiProvider ) : 
-    iIsRunning( EFalse ),
-    iApiProvider( aApiProvider ),
-    iLastMaxEstimate( 0 ),
-    iLastReceivedData( 0 )
-	{
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::~CBrowserProgressIndicator
-// ---------------------------------------------------------
-//
-CBrowserProgressIndicator::~CBrowserProgressIndicator()
-	{
-    delete iProgressData;
-    delete iMyKb;
-    delete iMyMb;
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::AddTransActIdL
-// ---------------------------------------------------------
-//
-void CBrowserProgressIndicator::AddTransActIdL( TUint16 aId )
-	{
-    //Format each id at start point.
-    AddProgressDataL(aId, 0, 0);
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::DeleteProgressDataItem
-// ---------------------------------------------------------
-//
-void CBrowserProgressIndicator::DeleteProgressDataItem( TUint16 aId )
-	{
-    TKeyArrayFix key(0, ECmpTUint16);	
-	TInt pos = 0;
-	TProgressData data;
-	data.iId = aId;
-	TInt retVal = iProgressData->Find( data,key,pos );
-    if ( retVal == KErrNone )
-        {
-        iProgressData->Delete( pos );
-        }		
-
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::TransActIdAmount()
-// ---------------------------------------------------------
-//
-TInt CBrowserProgressIndicator::TransActIdAmount() const
-	{
-    return iProgressData->Count();
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::TransActIdAmountCompleted()
-// ---------------------------------------------------------
-//
-TInt CBrowserProgressIndicator::TransActIdAmountCompleted() const
-    {
-    TInt numOfCompleted( 0 );
-    TInt i;
-    for( i=0; i<TransActIdAmount(); ++i )
-    {
-        if( iProgressData->At( i ).iComplete )
-            ++numOfCompleted;
-    }
-    return numOfCompleted;
-    }
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::ResetValues()
-// ---------------------------------------------------------
-//
-void CBrowserProgressIndicator::ResetValues()
-	{
-	iProgressData->Reset();
-    iProgressEstimate = 0;
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::ReceivedData()
-// ---------------------------------------------------------
-//
-TUint32 CBrowserProgressIndicator::ReceivedData()
-	{
-	TUint32 recvdData = 0;
-	for (TInt i = 0; i < iProgressData->Count();i++)
-		{
-		TProgressData data = iProgressData->At( i );
-		recvdData += data.iRecvdData;
-		}
-	return recvdData;
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::EstimateMaxData()
-// ---------------------------------------------------------
-//
-TUint32 CBrowserProgressIndicator::EstimateMaxData()
-	{
-	TUint32 maxData = 0;
-    TInt count = 0;
-    TUint32 estimation = 0;
-	for ( TInt i = 0; i < iProgressData->Count();i++ )
-		{
-		TProgressData data = iProgressData->At( i );
-        if( data.iMaxData )
-            {
-            maxData += data.iMaxData;
-            count++;
-            }
-		}
-     // estimate maximum data what will be received
-     if ( count )
-         {
-         return estimation = ((maxData/count)* iProgressData->Count());
-         }
-
-	return estimation;
-
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::TransActId()
-// ---------------------------------------------------------
-//
-TUint16 CBrowserProgressIndicator::TransActId( TInt aIndex )
-	{
-    return iProgressData->At( aIndex ).iId;
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::AddProgressDataL()
-// ---------------------------------------------------------
-//
-void CBrowserProgressIndicator::AddProgressDataL( 
-                     TUint16 aId, TUint32 aRecvdData, TUint32 aMaxData )
-	{
-	//Try to seek if current id exist in array
-	TKeyArrayFix key(0, ECmpTUint16);
-	TInt pos = 0;
-	TProgressData data;
-	data.iId = aId;
-	TInt retVal = iProgressData->Find( data,key,pos );
-	if ( retVal!=KErrNone ) //id was NOT found
-		{
-		//Add id, recvdData and maxData to array
-		TProgressData data;
-		data.iId = aId;
-		data.iRecvdData = aRecvdData;		
-        data.iMaxData = aMaxData;
-        data.iComplete = EFalse;
-        iProgressData->AppendL( data );
-		}
-	else
-		{
-
-        data = iProgressData->At( pos );
-		if( ((data.iRecvdData != aRecvdData) && aRecvdData!=0 ) )
-			{
-			data.iRecvdData = aRecvdData;
-            }
-        if ( aMaxData!=0 ) 
-            {
-            data.iMaxData = aMaxData;
-            }
-
-        iProgressData->Delete( pos );
-        iProgressData->InsertL( pos,data );	
-		}
-	}
-
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::TransActIdCompleteL()
-// ---------------------------------------------------------
-//
-void CBrowserProgressIndicator::TransActIdCompleteL( TUint16 aId )
-    {
-    TKeyArrayFix key( 0, ECmpTUint16 );	
-	TInt pos = 0;
-	TProgressData data;
-	data.iId = aId;
-	TInt retVal = iProgressData->Find( data,key,pos );
-    if ( retVal == KErrNone && ! iProgressData->At(pos).iComplete )
-        {
-        data = iProgressData->At( pos );
-        // we don't need this id anymore if both data values are empty
-        if ( !data.iMaxData && !data.iRecvdData )
-            {
-            iProgressData->Delete( pos );
-            }
-        else 
-            {
-            data.iComplete = ETrue;
-            if ( data.iMaxData > data.iRecvdData )
-                {
-                data.iRecvdData = data.iMaxData;
-                }
-            iProgressData->Delete( pos );
-            iProgressData->InsertL( pos,data );
-            }
-       }
-    }
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::EnquireStatusL()
-// ---------------------------------------------------------
-//
-void CBrowserProgressIndicator::EnquireStatusL()
-	{
-LOG_ENTERFN("EnquireStatusL");
-    // Reset string storage.
-	iPercentText.SetLength( 0 );
-	iDataText.SetLength( 0 );
-    iMBvalue.SetLength( 0 );
-
-    TUint32 receivedData = ReceivedData();
-    TUint32 maxEstimate = EstimateMaxData();
-    
-    if (receivedData == 0 || maxEstimate == 0)
-        {
-        // fake initial progress to reflect 5% downloaded and 0 kb received. 
-        receivedData    =  5;
-        maxEstimate     =  100;
-        }
-
-    //Calculate either kB-text or MB-text
-    if ( ((receivedData)/KOnekB ) <= KkBLimit )
-        {
-        HBufC* kbUnit = HBufC::NewL( iMyKb->Length()+5 );
-        TPtr ptr1( kbUnit->Des() );
-        StringLoader::Format( ptr1, *iMyKb, -1, (receivedData)/KOnekB );
-        AknTextUtils::DisplayTextLanguageSpecificNumberConversion(ptr1);
-        iDataText.Copy( ptr1 );
-        delete kbUnit;
-        }
-    else
-        {
-        
-        TReal received( receivedData );
-        TReal oneMB( KOneMB );
-        TReal result( received / oneMB );
-        // TUint32 result( receivedData / KOneMB );
-        if ( result < KMBLimit )
-            {
-            // TUint32 res2( ( ( receivedData * 100 ) / KOneMB ) % 100 );
-            // need to modify the format string too
-            iMBvalue.Format( twoDecimals, result );
-            }
-        else if ( result < KMaxMBLimit )
-            {
-            // TUint32 res2( ( ( receivedData * 10 ) / KOneMB ) % 10 );
-            // need to modify the format string too
-            iMBvalue.Format( oneDecimal, result );
-            }
-        else if ( result > KMaxMBLimit)
-            {
-            TInt16 resultInt( 0 );
-            Math::Int( resultInt, result );
-            iMBvalue.Format( noDecimals, resultInt );
-            }
-        HBufC* mbUnit = HBufC::NewL( iMyMb->Length() + iMBvalue.Length() + 1 );
-        TPtr ptr1( mbUnit->Des() );
-        StringLoader::Format( ptr1, *iMyMb, -1, iMBvalue );
-        AknTextUtils::DisplayTextLanguageSpecificNumberConversion(ptr1);
-        iDataText.Copy( ptr1 );
-        delete mbUnit;
-        }
-       
-    // progress animation should be shown only in content view (not in bookmarks)
-    if( iApiProvider.LastActiveViewId() == KUidBrowserContentViewId )
-        {
-        // Check all possible states.
-        if ( !iInitialDownloadIndicatorState && maxEstimate <= 0 )
-            {
-            iInitialDownloadIndicatorState = ETrue;
-            // The initial indicator state changed from EFalse to ETrue. Update it.
-            iApiProvider.Display().UpdateFSDownloadInitialIndicator( ETrue );
-            }
-        else if ( !iInitialDownloadIndicatorState && 0 < maxEstimate )
-            {
-            //iInitialDownloadIndicatorState = EFalse; // Unnecessary statement.
-            }
-        else if ( iInitialDownloadIndicatorState && maxEstimate <= 0 )
-            {
-            //iInitialDownloadIndicatorState = ETrue; // Unnecessary statement.
-            }
-        else if ( iInitialDownloadIndicatorState && 0 < maxEstimate )
-            {
-            iInitialDownloadIndicatorState = EFalse;
-            // The initial indicator state changed from ETrue to EFalse. Update it.
-            iApiProvider.Display().UpdateFSDownloadInitialIndicator( EFalse );
-            }
-
-        iApiProvider.Display().UpdateFSProgressIndicator( maxEstimate, receivedData );
-
-        // Render the downloaded data size.
-        iApiProvider.Display().UpdateFSProgressDataL( iDataText );
-        }
-    else
-        {
-        // is this section really run?
-
-        // Show how many percentage has been dowloaded
-        if ( maxEstimate )
-            {
-            TReal received( receivedData );
-            TReal maxEst( maxEstimate );
-            TReal factor( 100 );
-            TReal percentage( (received / maxEst) * factor );
-            TInt16 percentInt( 0 );
-            Math::Int( percentInt, percentage );
-            if ( percentInt > KMaxPercentage )
-                {
-                percentInt = KMaxPercentage;
-                }
-            HBufC* percentUnit = 
-                StringLoader::LoadLC( R_WML_UNIT_PERCENT, percentInt );
-            iPercentText.Format( text, percentUnit, &iDataText );
-            CleanupStack::PopAndDestroy( percentUnit ); //percentUnit
-
-            //Update navi pane
-            iApiProvider.UpdateNaviPaneL( iPercentText );
-            }
-        //Show amount of downloaded data (recvd data)
-        //(if maximum data is not available)
-        else
-            {
-            iApiProvider.UpdateNaviPaneL( iDataText );
-            }
-        }
-	}
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::StartL()
-// ---------------------------------------------------------
-//
-void CBrowserProgressIndicator::StartL()
-    {
-    if ( !iIsRunning )
-        {
-        // clear progress bar data
-        iLastMaxEstimate = 0;
-        iLastReceivedData = 0;
-                    
-        // progress animation should be shown 
-        // only in content view (not in bookmarks)
-        if( iApiProvider.LastActiveViewId() == KUidBrowserContentViewId )
-            {
-            //Start progress bar
-            NotifyProgress();
-            
-            iInitialDownloadIndicatorState = ETrue;
-            iApiProvider.Display().UpdateFSDownloadInitialIndicator( ETrue );
-            // Show initially 0 kB as downloaded size.
-            HBufC* kbUnit = HBufC::NewL( iMyKb->Length()+5 );
-            TPtr ptr1( kbUnit->Des() );
-            StringLoader::Format( ptr1, *iMyKb, -1, 0 );
-            iDataText.Copy( ptr1 );
-            delete kbUnit;
-            iApiProvider.Display().UpdateFSProgressDataL( iDataText );
-            }
-
-        iIsRunning = ETrue;
-        }
-    }
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::StopL()
-// ---------------------------------------------------------
-//
-void CBrowserProgressIndicator::StopL()
-    {
-    if( iApiProvider.LastActiveViewId() == KUidBrowserContentViewId )
-        {
-        ResetValues();
-        if( iInitialDownloadIndicatorState )
-            {
-            iInitialDownloadIndicatorState = EFalse;
-            iApiProvider.Display().
-                UpdateFSDownloadInitialIndicator( EFalse );
-            }
-        iApiProvider.Display().RestoreTitleL();
-        }
-    iIsRunning = EFalse;
-    }
-
-// ---------------------------------------------------------
-// CBrowserProgressIndicator::NotifyProgress()
-// ---------------------------------------------------------
-//
-void CBrowserProgressIndicator::NotifyProgress()
-    {
-    // Unfortunately we could not eliminate TRAP. The Engine cannot 
-    // support a leavable NotifyProgressL() function.
-    TRAP_IGNORE( EnquireStatusL() );
-    }
-
-//  End of File