diff -r 000000000000 -r 96612d01cf9f videofeeds/server/IptvEpgManager/inc/vcxgroupupdater.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/server/IptvEpgManager/inc/vcxgroupupdater.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,311 @@ +/* +* 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: Implements customised service update* +*/ + + + + +#ifndef VCXGROUPUPDATER_H_ +#define VCXGROUPUPDATER_H_ + +#include +#include "MIptvTimerObserver.h" +#include "MIptvEpgVodCallback.h" +#include "CIptvEpgPluginInterface.h" + +class CIptvServer; +class CIptvEpgSession; +class CIptvEpgService; +class CIptvEpgVodMsqQueue; +class CIptvTimer; + +/** + * RSS plugin. + * + * Controls content parsing and download. + * + * @lib IptvRssPlugin.dll + * @since S60 v3.1 + */ +class CVcxGroupUpdater : public CBase, + public MIptvEpgVodCallback, + public MIptvTimerObserver + { + +public: + + static CVcxGroupUpdater* NewL( + CIptvServer& aServer, + CIptvEpgSession& iSession, + CIptvEpgVodMsqQueue& aMsgQueue ); + + ~CVcxGroupUpdater(); + + /** + * Start download. + * + * @param aService Group service. + */ + void StartGroupUpdateL( + CIptvEpgService* aService ); + + /** + * Cancel current download download, if any. + */ + void CancelGroupUpdate(); + + /** + * Enquire is download ongoing. + * @return ETrue, if download is ongoing. + */ + TBool IsGroupUpdateOngoing(); + +// From MIptvEpgVodCallback interface + + /** + * Plugin started. + */ + void StartedL(); + + /** + * ECG content update from XML completed. Thumbnails are not downloaded yet. + */ + void ContentUpdateCompletedL(); + + /** + * Plugin finished. + * + * @param aUpdateInterval Update interval defines how long EPG data is valid. + */ + TInt FinishedL( TTime& aUpdateInterval ); + + /** + * Add new category to database. + * + * @param aCategory Reference to CIptvEpgCategory object. + * @param aCategoryKey New category key value is inserted to aCategoryKey + * @return KErrNone if successful, otherwise another of the system-wide error codes. + */ + TInt AddCategoryL( CIptvEpgCategory& aCategory, TUint32& aCategoryKey ); + + /** + * Add new content to given category. + * + * @param aContent Reference to CIptvEpgContent object. + * @param aMediaContents Pointer array containing media content objects. There can be n media content's for one + * content. + * @param aContentKey New content key value is inserted to aContentKey + * @return KErrNone if successful, otherwise another of the system-wide error codes. + */ + TInt AddContentL( + CIptvEpgContent& aContent, + RPointerArray aMediaContents, + TUint32& aContentKey ); + + /** + * Update service thumbnail. + * + * @param aIconFilePath Full path to service thumbnail in local filesystem. + * @param aGrouped if true updates also grouped item, otherwise not. + * @return KErrNone if successful, otherwise another of the system-wide error codes. + */ + TInt UpdateServiceThumbnailL( TDesC& aIconFilePath, const TBool aGrouped ); + + /** + * Add content to category. + * + * @param aCategoryKey Category key. + * @param aContentKey Content key. + */ + TInt AddRelationL( TUint32& aCategoryKey, TUint32& aContentKey ); + + /** + * Error + * + * @param aError Error code. + * @param aInfo Further info. + */ + void ErrorL( TInt aError, TInt aInfo ); + + /** + * Update category icon. + * + * @param aCategoryKey Category key. + * @param aIconFileId Icon file id to search from the database. + * @param aIconFilePath Full path to icon file or URL + filename. + * @param aIsUrl If aIconFilePath is URL aIsUrl == ETrue, if aIconFilePath is path + * to local filesystem aIsUrl == EFalse. + * @return KErrNone if successful, otherwise another of the system-wide error codes. + */ + TInt UpdateCategoryIconL( + TUint32& aCategoryKey, + TUint32& aIconFileId, + TDesC& aIconFilePath, + TBool aIsUrl ); + + /** + * Update content icon. + * + * @param aCategoryKey Content key. + * @param aIconFileId Icon file id to search from the database. + * @param aIconFilePath Full path to icon file or URL + filename. + * @param aIsUrl If aIconFilePath is URL aIsUrl == ETrue, if aIconFilePath is path + * to local filesystem aIsUrl == EFalse. + * @return KErrNone if successful, otherwise another of the system-wide error codes. + */ + TInt UpdateContentIconL( + TUint32& aContentKey, + TUint32& aIconFileId, + TDesC& aIconFilePath, + TBool aIsUrl ); + +// From MiptvTimerObserver. + + /** + * @param aTimer Pointer to timer which expired. + */ + void TimerExpired( CIptvTimer* aTimer ); + +private: + + /** + * C++ default constructor. + */ + CVcxGroupUpdater( + CIptvServer& aServer, + CIptvEpgSession& aSession, + CIptvEpgVodMsqQueue& aMsgQueue ); + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + /** + * Starts parsing of downloaded VCFG file. + * @param aPathName VCFG file path name. + */ + void StartVcfgFileParseL( const TDesC& aPathName ); + + /** + * Timer leaving implementation. + * + * @param aTimer Pointer to timer which expired. + */ + void DoTimerExpiredL( CIptvTimer* aTimer ); + + /** + * Reset .vcfg parsed flag. + * + * @param aServiceId Id of the service to be checked. + */ + void SetNotParsedL( TUint32 aServiceId ); + + /** + * Check whether given service has been parsed. + * + * @param aServiceId Id of the service to be checked. + * @return true if parsing completed, otherwise false. + */ + TBool IsServiceParsed( TUint32 aServiceId ); + + /** + * Set service Last Modified. + * + * @param aServiceId Id of the service to be checked. + * @param aLastModified New last modified time. + */ + void SetLastModifiedL( + TUint32 aServiceId, + TTime aLastModified ); + + /** + * Collect list of required thumbnails and start download. + */ + void StartThumbnailDownloadL(); + +private: // Data members + + /** + * Server + */ + CIptvServer& iServer; + + /** + * calling session. + */ + CIptvEpgSession& iSession; + + /** + * Service id of currently ongoing single file downloads. + */ + TUint32 iCurrentGroupServiceId; + + /** + * Download plugin. + * Own + */ + CIptvEpgPluginInterface* iPlugin; + + /** + * Informs observers about update state. + */ + CIptvEpgVodMsqQueue& iMsgQueue; + + /** + * Common file server session, used by CIptvVodDownload objects too + */ + RFs iFs; + + /** + * Indicates download is in progress. + */ + TBool iPluginRunning; + + /** + * Current action/type of file to be downloaded. + */ + CIptvEpgPluginInterface::TIptvRSSAction iCurrentAction; + + /** + * Server object was not updated, no download was actually needed. + */ + TBool iLocalValid; + + /** + * Downloaded path. + * Own. + */ + HBufC* iDownloadedVcfgPath; + + /** + * This is started when there is file sent to provision parsing. + * Own. + */ + CIptvTimer* iVcfgParseTimer; + + /** + * Keep count of vcfg parsing tries. + */ + TInt iVcfgParseMaxCount; + + /** + * To be saved to service after successfull dowload and parse. + */ + TTime iDownloadStartTime; + + }; + +#endif /* VCXGROUPUPDATER_H_ */