diff -r 000000000000 -r 96612d01cf9f videofeeds/vcnsuiengine/inc/vcxnsdownloadupdater.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/vcnsuiengine/inc/vcxnsdownloadupdater.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,184 @@ +/* +* 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 C_CVCXNSDOWNLOADUPDATER_H +#define C_CVCXNSDOWNLOADUPDATER_H + +#include +#include +#include "CIptvUtil.h" + +class CPeriodic; +class CVcxNsContent; + +/** + * @lib vcxnsuiengine + * @since S60 5.0 + * + * Observer interface for the CVcxNsDownloadUpdater class, + * receives notification if the object with given mpx id has + * changed, and needs to be refreshed. + */ +class MVcxNsDownloadUpdaterObserver + { + +public: + + /** + * Notify, that the object with given mpx id has + * changed, and needs to be refreshed. + * @param aMpxId Mpx media id + */ + virtual void UpdateVideoObject( TUint32 aMpxId ) = 0; + + /** + * Notifies that resume has started from beginning. + * @param aMpxId MPX Media Id of the video object. + */ + virtual void ResumeStartedFromBeginningL( TUint32 aMpxId ) = 0; + }; + +/** + * @lib vcxnsuiengine + * @since S60 5.0 + */ +NONSHARABLE_CLASS( CVcxNsDownloadUpdater ) : public CBase + { + +private: + + /** + * TDownloadItem + * Private inner class for storing polled downloads and their + * previous statuses and progresses. + */ + class TDownloadItem + { + + public: + + /** + * Content object. Must not be deleted until the remove is called + */ + CVcxNsContent* iContent; + + /** + * Old state, used for determine refresh need. + */ + TUint32 iState; + + /** + * Old progress, used for determine refresh need. + */ + TUint32 iProgress; + + }; + +public: + + /** + * Two-phased constructor. + * @param aObserver Callback observer + */ + static CVcxNsDownloadUpdater* NewL( MVcxNsDownloadUpdaterObserver* aObserver ); + + /** + * Destructor. + */ + virtual ~CVcxNsDownloadUpdater(); + + /** + * Adds download to the refresh list. + * @note Content object must not be deleted until remove is called + * @param aContent Content object + */ + void AddDownload( CVcxNsContent* aContent ); + + /** + * Removes download from the refresh list. + * + * @param aContent Content object + */ + void RemoveDownload( CVcxNsContent* aContent ); + + /** + * Removes all downloads from the refresh list. + */ + void RemoveAllDownloads(); + + /** + * Periodic's callback. + * @param aPtr Object pointer to be used with callback routine + */ + static TInt Callback( TAny *aPtr ); + + /** + * Update the downloads. + */ + void UpdateDownloadsL(); + + /** + * Update given download if it's status has changed. + * + * @param aDownload Download item + */ + void UpdateDownloadL( TDownloadItem& aDownload ); + +private: + + /** + * Constructor + * @param aObserver Callback observer + */ + CVcxNsDownloadUpdater( MVcxNsDownloadUpdaterObserver* aObserver ); + + void ConstructL(); + + /** + * Find the download from the downloads list. + * + * @param IN aContent Content, to which the searched content is compared. + * @param OUT aIndex index of found download in internal array. + * @return Is it found. + */ + TBool FindDownload( CVcxNsContent* aContent , TInt* aIndex ); + +private: // data + + /** + * MVcxNsDownloadUpdaterObserver + */ + MVcxNsDownloadUpdaterObserver* iObserver; + + /** + * CPeriodic. + * Own. + */ + CPeriodic* iTimer; + + /** + * Array of polled downloads + * Own. + */ + RArray iDownloadArray; + + }; + +#endif // C_CVCXNSDOWNLOADUPDATER_H