diff -r 000000000000 -r 96612d01cf9f videofeeds/vcnsuiengine/inc/vcxnsupdateprogresshandler.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/vcnsuiengine/inc/vcxnsupdateprogresshandler.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,219 @@ +/* +* Copyright (c) 2008 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: +* +*/ + + + + +#ifndef MVCXNSUPDATEPROGRESSHANDLER_H +#define MVCXNSUPDATEPROGRESSHANDLER_H + +// INCLUDES +#include +#include +#include "vcxnsuiengine.h" +#include "vcxnsupdateprogressif.h" +#include "MIptvTimerObserver.h" + +class CIptvTimer; +// CLASS DECLARATION + +/** + * MVcxNsUpdateProgressObserver + * + * @lib vcxnsuiengine.lib + */ +class MVcxNsUpdateProgressObserver + { +public: + + /** + * Handle feed update progress change + * Informs which index in list needs to be updated with new progress + * @param aIndex Index where progress needs to be updated + * @param aProgress Progress as percentage + * + */ + virtual void HandleFeedUpdateProgressL( TInt aIndex, TInt aProgress ) = 0; + }; + +/** +* CVcxNsUpdateProgressHandler class +* +* @lib vcxnsuiengine.lib +*/ +NONSHARABLE_CLASS( CVcxNsUpdateProgressHandler ): public CBase, + public MVcxNsUpdateProgressIf, + public MIptvTimerObserver + { + +public: + + /** + * Constructor + * @param aUiEngine Ui engine + */ + static CVcxNsUpdateProgressHandler* NewL( CVcxNsUiEngine& aUiEngine ); + + /** + * Destructor + */ + virtual ~CVcxNsUpdateProgressHandler(); + +public: + + /** + * From MVcxNsUpdateProgressIf + * RegisterObserver. + * @param aObserver Observer + */ + void RegisterObserver( MVcxNsUpdateProgressObserver* aObserver ); + + /** + * From MVcxNsUpdateProgressIf + * DeRegisterObserver. + * @param aObserver Observer + */ + void DeRegisterObserver( MVcxNsUpdateProgressObserver* aObserver ); + + /** + * From MVcxNsUpdateProgressIf + * Get progress. + * @param aServiceId Service id which progress is requested + * @return Progress between 0-99, KErrNotFound if not available + */ + TInt GetProgress( TUint32 aServiceId ); + + /** + * From MIptvTimerObserver + * The function to be called when a timeout occurs. + * + * @param aTimer Pointer to timer which expired. + */ + void TimerExpired( CIptvTimer* aTimer ); + + /** + * Cancel progress handler. + * + */ + void Cancel(); + +public: + + /** + * Update progress value according to status. + * @param aServiceId Service id + * @param aUpdateStatusMsg Update status message + * @param aInfo Additional info with status + */ + void HandleUpdateStatusChangeL( + TUint32 aServiceId, + TInt aUpdateStatusMsg, + TInt aInfo ); + +private: + + /** + * Default constructor + * @param aUiEngine Reference to ui engine. + */ + CVcxNsUpdateProgressHandler( CVcxNsUiEngine& aUiEngine ); + + /** + * Check if thumbnails are allowed. + * @return ETrue if thumbnail download is allowed + * otherwise EFalse. + */ + TBool ThumbnailsAllowedL() const; + + /** + * Start progress update timer + */ + void StartProgressUpdateTimerL( ); + + /** + * Refresh progress with specified progress value. + * Informs observer of the change. + * @param aProgress Progress value + */ + void RefreshProgressL( TInt aProgress ); + +private: + +// Data + + /** + * Update progress observer. + * Not Own. + */ + MVcxNsUpdateProgressObserver* iProgressObserver; + + /** + * Reference to UI engine. + */ + CVcxNsUiEngine& iUiEngine; + + /** + * Progress timer. + * Own. + */ + CIptvTimer* iProgressTimer; + + /** + * Flag for thumbnail setting. + * ETrue if thumbnail download in content update is allowed. + * By default EFalse. + */ + TBool iThumbnails; + + /** + * Previously updated progress value. + * + */ + TInt iPreviousProgress; + + /** + * Saves information on how much progress is increased + * when one thumbnail has been downloaded. + * If value is 0, progress is calculated based on + * iThumbnailsPercent. + */ + TInt iProgressPerThumbnail; + + /** + * Information on how many thumbnails must be + * downloaded to increase progress by percent. + */ + TInt iThumbnailsInPercent; + + /** + * Counter for downloaded thumbnails. + */ + TInt iThumbnailCounter; + + /** + * Service id of currently updated service. + */ + TUint32 iCurrentServiceId; + + /** + * Current status of content update. + */ + TInt iCurrentStatus; + }; + + +#endif // MVCXNSUPDATEPROGRESSHANDLER_H