/*
* Copyright (c) 2004-2010 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: 
*
*/


/**
 @file
 @internalComponent
 @released
*/

#ifndef __PROGRESSBAR_H__
#define __PROGRESSBAR_H__

namespace Swi
	{
	/// How many increments to update the bar on the uninstall of a file
	const static TInt KProgressBarUninstallAmount=1;
	
	/// How many bytes to copy before updating the progress bar by one increment.
	const static TInt KProgressBarInstallChunkSize=1048576;  //1MB

	/// The extra increment we add onto the end to make there always be some progress.
	const static TInt KProgressBarEndIncrement=1;
	
	/// Percentage of completion required before updating the progress bar.
    const static TInt KProgressBarIncrement=1;

	/**
	 * Utility function to get how much to update the progress bar for a certain
	 * size of file copied. The smallest increment is KProgressBarEndIncrement since we always want to show that 
	 * some progress has occurred.
	 */
	TInt ProgressBarFileIncrement(TInt64 aSize);

	/**
	 * Utility function to get how much to update the progress bar for a certain
	 * size of chunk copied. 
	 */
	TInt ProgressBarChunkIncrement(TInt64 aSize);

	inline TInt ProgressBarChunkIncrement(TInt64 aSize)
		{
		return I64LOW(aSize) / KProgressBarInstallChunkSize;
		}

	inline TInt ProgressBarFileIncrement(TInt64 aSize)
		{
		return KProgressBarEndIncrement + ProgressBarChunkIncrement(aSize);
		}
	}


#endif
