diff -r 000000000000 -r 96612d01cf9f videofeeds/clientapi/inc/CIptvService.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/videofeeds/clientapi/inc/CIptvService.h Mon Jan 18 20:21:12 2010 +0200 @@ -0,0 +1,783 @@ +/* +* Copyright (c) 2005-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: Object to hold service information* +*/ + + + + + +#ifndef CIPTVSERVICE_H +#define CIPTVSERVICE_H + +// INCLUDES +#include "CIptvUtil.h" +#include "TIptvIap.h" +#include "CIptvIapList.h" +#include + +// CONSTANTS + +// MACROS + +// DATA TYPES + +// FUNCTION PROTOTYPES + +// FORWARD DECLARATIONS + + +// CLASS DECLARATION + +/** +* CIptvService encapsulates Video Center service information. +* This class is used by CIptvServiceManager, CIptvServiceManagementClient +* and MIptvServiceManagementClientObserver classes. This is just an container, +* database is not modified when this class is edited. Editing is done +* through CIptvServiceManagementClient instance. +*/ +class CIptvService : public CBase + { + public: // Constructors and destructor + + /** + * Two-phased constructor. + */ + IMPORT_C static CIptvService* NewL(); + + /** + * Destructor. + */ + IMPORT_C virtual ~CIptvService(); + + /** + * TServiceType. + */ + enum TServiceType + { + /** + * Video on demand + */ + EVod = 0, + + /** + * Live TV + */ + ELiveTv, + + /** + * Vod cast + */ + EVodCast, + + /** + * Launches browser to a certain url. + */ + EBrowser, + + /** + * Videos on a remote device. + */ + EVideoRemote, + + /** + * Launches application (UID defines which one) + */ + EApplication, + + /** + * DVB-H, launches the mobile tv application. + */ + EMobileTv, + + /** + * Launches browser to an url which is + * constructed by appending dynamic data (country code etc) + * to address ( received with CIptvService::GetAddress()). + * Dynamic data is generated with SecureProvisioningUrlParametersL() function. + */ + ESecureProvisioningServer, + + /** + * Video Store. + */ + EVideoStore, + + /** + * Service group feed. + */ + EServiceGroup, + + /** + * Search URL feed. + */ + ESearch, + + /** + * Upload URL feed. + */ + EUpload, + + /** + * All other service types + */ + EOther + + }; + + //1 = flag is set, 0 = flag is not set + enum TFlags + { + /** + * Is the service selected (=shown) by UI + */ + ESelected = ( 1 << 0 ), // 0 + + /** + * This affects every field except IAP list, provisioned services are read only. + */ + EReadOnly = ( 1 << 1 ), // 2 + + /** + * If not set, the service is subservice + */ + EMainService = ( 1 << 2 ), // 4 + + /** + * If set, connection to this service is approved by UI + */ + EConnectionApproved = ( 1 << 3 ), // 8 + + /** + * If set, IAPs can't be modified. + */ + EReadOnlyIaps = ( 1 << 4 ), // 16 + + /** + * If set, belongs to some service group. + */ + EGroupedService = ( 1 << 5 ), // 32 + + /** + * If set, downloaded group is received. + */ + EGroupReceived = ( 1 << 6 ) // 64 + }; + + public: // New functions + + /** + * Sets service unique ID. + * ID is created by Service Manager when service is added to database for the first time. + * Client needs to set this only when updating existing service. + * When adding a service to database this value may be anything. + * @param aId unique id. + */ + IMPORT_C void SetId( TUint32 aId ); + + /** + * Gets service unique ID. + * @return TUint32 service unique ID. + */ + IMPORT_C TUint32 GetId(); + + /** + * Sets the service name, KIptvSmServicesDbNameMaxLength is the max length. + * @param aName Name of the service + * @return System wide error code. + */ + IMPORT_C TInt SetName( const TDesC16& aName ); + + /** + * Gets the service name. + * @return Name of the service. + */ + IMPORT_C TDes16& GetName(); + + /** + * Sets the service address, KIptvSmServicesDbAddressMaxLength + * (defined in CIptvUtil.h) is the max length in 16-bit words. + * @param aAddress The address of the service + * @return System wide error code. + */ + IMPORT_C TInt SetAddress( const TDesC16& aAddress ); + + /** + * Gets the service address url. + * @return A Reference to service address. + */ + IMPORT_C TDes16& GetAddress(); + + /** + * Sets path to icon file. KIptvSmServicesDbIconPathMaxLength is the max + * length (in 16-bit words). + * @param aIconPath Path to the icon file + * @return System wide error code. + */ + IMPORT_C TInt SetIconPath( const TDesC16& aIconPath ); + + /** + * Gets path to icon file. + * @return A Reference to icon path. + */ + IMPORT_C TDes16& GetIconPath(); + + /** + * Sets EPG plugin UID. + * @param aEpgPluginUid EPG plugin UID + */ + IMPORT_C void SetEpgPluginUid( TUid aEpgPluginUid ); + + /** + * Gets EPG plugin UID. + * @return TUid EPG plugin UID. + */ + IMPORT_C TUid GetEpgPluginUid(); + + /** + * Sets VOD plugin UID. + * @param aVodPluginUid VOD plugin UID + */ + IMPORT_C void SetVodPluginUid( TUid aVodPluginUid ); + + /** + * Gets VOD plugin UID. + * @return TUid + */ + IMPORT_C TUid GetVodPluginUid(); + + /** + * Sets IPTV plugin UID. + * @param aIptvPluginUid IPTV plugin UID + */ + IMPORT_C void SetIptvPluginUid( TUid aIptvPluginUid ); + + /** + * Gets IPTV plugin UID. + * @return TUint32 IPTV Plugin UID. + */ + IMPORT_C TUid GetIptvPluginUid(); + + /** + * Sets service type. + * @param Service type. + */ + IMPORT_C void SetType( TServiceType aType ); + + /** + * Gets service type. + * @return TServiceType. + */ + IMPORT_C TServiceType GetType(); + + /** + * Sets Internet access point list. + * @param aIapList access point list to set. + * @return System wide error code. + */ + IMPORT_C TInt SetIapListL( CIptvIapList& aIapList ); + + /** + * Gets Internet access point list. + * @return IAP list + */ + IMPORT_C CIptvIapList& GetIapList(); + + /** + * Sets user name, KIptvSmPasswordsDbUserNameMaxLength (defined in CIptvUtil.h, + * in 16 byte words) is the max length. + * @param aUserName User name, used for authentication. + * @return System wide error code. + */ + IMPORT_C TInt SetUserName( const TDesC16& aUserName ); + + /** + * Gets user name. + * @return User name + */ + IMPORT_C TDes16& GetUserName(); + + /** + * Sets password, KIptvSmPasswordsDbPasswordMaxLength is the max length (in 16-bit words, + * defined in CIptvUtil.h). + * @param aPassword Password, used for authentication. + * @return System wide error code. + */ + IMPORT_C TInt SetPassword( const TDesC16& aPassword ); + + /** + * Gets password. + * @param aPassword Password, used for authentication. + */ + IMPORT_C TDes16& GetPassword(); + + /** + * Sets description of the service. + * KIptvSmServicesDbDescMaxLength is the max length (in 16-bit words). + * @param aDesc Description. + * @return System wide error code. + */ + IMPORT_C TInt SetDesc( const TDesC16& aDesc ); + + /** + * Gets description of the service. + * @return Description of the service. + */ + IMPORT_C TDes16& GetDesc(); + + /** + * Sets service flags, see TFlags for bit values. + * @param aFlags 32 bits of flags + */ + IMPORT_C void SetFlags( TUint32 aFlags ); + + /** + * Gets service flags, see TFlags for bit values. + * @return Flags. + */ + IMPORT_C TUint32 GetFlags(); + + /** + * Sets application UID value. + * @param aUid + */ + IMPORT_C void SetApplicationUid( TInt32 aUid ); + + /** + * Gets application UID. + * @return Application UID. + */ + IMPORT_C TInt32 GetApplicationUid(); + + /** + * Sets display order. Client can use this to store services + * position on the screen. + * @param aOrder + */ + IMPORT_C void SetDisplayOrder( TUint32 aOrder ); + + /** + * Gets display order. + * @return Display order. + */ + IMPORT_C TUint32 GetDisplayOrder(); + + /** + * Sets provider ID. + * KIptvSmServicesDbProviderIdMaxLength is the maximum length. + * This is unique, if one tries to add a new service to database + * and there is already a service with the same provider id and the provider id + * is != empty descriptor, then new record is not created, instead the existing service + * is updated. + * @param aProviderId + * @return System wide error code. + */ + IMPORT_C TInt SetProviderId( const TDesC& aProviderId ); + + /** + * Gets provider ID. + * @return provider id + */ + IMPORT_C TDesC& GetProviderId(); + + /** + * Sets account management url. + * KIptvSmServicesDbAccountManagementUrlMaxLength is the maximum length. + * @param aAccountManagementUrl + * @return System wide error code. + */ + IMPORT_C TInt SetAccountManagementUrl( const TDesC& aAccountManagementUrl ); + + /** + * Gets account management url. + * @return account management url. + */ + IMPORT_C TDesC& GetAccountManagementUrl(); + + /** + * Sets EPG update time. + * @param aTime time. + */ + IMPORT_C void SetEpgUpdateTimeL( const TTime& aTime ); + + /** + * Gets time when EPG was last time updated. + * @return time + */ + IMPORT_C TTime& GetEpgUpdateTimeL(); + + /** + * Sets IAP name. KIptvSmServicesDbIapNameMaxLength is the maximum length. + * IAP name is set when service is being added by provisioning, since provisioning + * data can't contain the IAP ID which is generated by the CommsDb and differs from + * device to device. IAP name is converted to IAP ID in Network Selection when it + * is used for the first time. + * @param aIapName IAP name. + */ + IMPORT_C void SetIapNameL( const TDesC& aIapName ); + + /** + * Gets IAP name. + * @return IAP name. + */ + IMPORT_C const TDesC& GetIapNameL(); + + /** + * Sets the search url. KIptvSmServicesDbSearchUrlMaxLength is the maximum length. + * @param aSearchUrl The search url. + */ + IMPORT_C void SetSearchUrlL( const TDesC& aSearchUrl ); + + /** + * Sets the record url. KIptvSmServicesDbRecordUrlMaxLength is the maximum length. + * @param aRecordUrl The record url. + */ + IMPORT_C void SetRecordUrlL(const TDesC& aRecordUrl); + + /** + * Gets the search url. + * @return The search url. + */ + IMPORT_C const TDesC& SearchUrl() const; + + /** + * Gets the record url. + * @return The record url. + */ + IMPORT_C const TDesC& RecordUrl() const; + + /** + * Sets the scheduled download network. + * @param aScheduleDlNetwork The scheduled download network. + */ + IMPORT_C void SetScheduleDlNetwork( TUint aScheduleDlNetwork ); + + /** + * Get the scheduled download network. + * @return The scheduled download network. + */ + IMPORT_C TUint ScheduleDlNetwork() const; + + /** + * Sets the scheduled download time. + * @param aScheduleDlTime The scheduled download time. + */ + IMPORT_C void SetScheduleDlTime( TUint aScheduleDlTime ); + + /** + * Get the scheduled download time. + * @return The scheduled download time. + */ + IMPORT_C TUint ScheduleDlTime() const; + + /** + * Sets the scheduled download type. + * @param aScheduleDlNetwork The scheduled download type. + */ + IMPORT_C void SetScheduleDlType( TUint aScheduleDlType ); + + /** + * Get the scheduled download type. + * @return The scheduled download type. + */ + IMPORT_C TUint ScheduleDlType() const; + + /** + * Sets the last succesfull scheduled download time. + * @param aScheduleDlNetwork The last succesfull scheduled download time. + */ + IMPORT_C void SetScheduledLastDownloadTime( const TTime& aTime ); + + /** + * Get the last succesfull scheduled download time. + * @return The last succesfull scheduled download time. + */ + IMPORT_C const TTime& GetScheduledLastDownloadTime() const; + + /** + * Sets service group ID. + * @param aId a group id. + */ + IMPORT_C void SetGroupId( TUint32 aGroupId ); + + /** + * Gets service group ID. + * @return TUint32 service group ID. + */ + IMPORT_C TUint32 GetGroupId(); + + /** + * Sets use category flag. + * @param aUseCategory use category state. + */ + IMPORT_C void SetUseCategory( const TBool& aUseCategory ); + + /** + * Gets use category flag. + * @return use category state. + */ + IMPORT_C TBool GetUseCategory(); + + /** + * Sets the upload provider. KIptvSmServicesDbNameMaxLength is the maximum length. + * @param aProvider The upload provider. + * @return System wide error code. + */ + IMPORT_C TInt SetUploadProvider( const TDesC& aProvider ); + + /** + * Gets the upload url. + * @return The upload provider. + */ + IMPORT_C const TDesC& GetUploadProvider() const; + + /** + * Sets the icon address, KIptvSmServicesDbAddressMaxLength + * (defined in CIptvUtil.h) is the max length in 16-bit words. + * @param aAddress The address of the icon + * @return System wide error code. + */ + IMPORT_C TInt SetIconUrl( const TDesC16& aAddress ); + + /** + * Gets the icon address url. + * @return A Reference to icon address. + */ + IMPORT_C TDes16& GetIconUrl(); + + /** + * Sets the service.\n + * Sets all service parameters from a single binary descriptor.\n + * This format is used when sending service data over IPC.\n + * This descriptor can be retrieved with GetL method.\n + * SetL uses the same binary format as InternalizeL.\n + * \n + * @param aService Service data as a binary descriptor. + * @return System wide error code. + */ + IMPORT_C TInt SetL( const TDesC8& aService ); + + /** + * Gets the service data as a binary descriptor.\n + * This format is used when sending service data over IPC or\n + * when handling arrays of services.\n + * User is responsible for freeing the HBufC8*.\n + * GetL uses the same binary format as ExternalizeL.\n + * \n + * @return Service data as a binary data descriptor. + */ + IMPORT_C HBufC8* GetL(); + + /** + * Calculates binary descriptor size with current member values. + * @return size. + */ + IMPORT_C TUint32 CountSize(); + + /** + * Read data stream and construct this class from it. + * @param aStream Stream to read data from. + */ + IMPORT_C void InternalizeL( RDesReadStream& aStream ); + + + /** + * Write internal data to binary format which can be sent over IPC. + * @param aStream The Stream where data is written. + */ + IMPORT_C void ExternalizeL( RDesWriteStream& aStream ) const; + + /** + * Counts size of the externalize result. User can call this to find out + * how much data will be received from ExternalizeL. + */ + IMPORT_C TUint32 CountExternalizeSize(); + + /** + * Compares this object to aService object. + * @param aService Object to be compared with this object. + * @return ETrue if services are identical, EFalse otherwise. + */ + IMPORT_C TBool CompareL( CIptvService& aService ); + + /** + * CIptvService::ESecureProvisioningServer type service needs additional dynamic + * parameters after the address url (CIptvService::GetAddress()), this function + * generates the dynamic part. + * + * @return Pointer to dynamic part of the url, caller gets ownership of the pointer. + */ + IMPORT_C static HBufC* SecureProvisioningUrlParametersL(); + + private: + + /** + * By default Symbian 2nd phase constructor is private. + */ + void ConstructL(); + + public: + + /** + * Internet access point list + */ + CIptvIapList* iIapList; + + private: // Data + + /* + * Unique Service ID. + */ + TUint32 iId; + + /* + * Name of the service. + */ + TBuf16 iName; + + /* + * Address of the service. + */ + TBuf16 iAddress; + + /* + * Path to icon file. + */ + TBuf16 iIconPath; + + /* + * Epg plugin Uid. + */ + TInt32 iEpgPluginUid; + + /* + * Vod plugin Uid. + */ + TInt32 iVodPluginUid; + + /* + * Iptv plugin Uid. + */ + TInt32 iIptvPluginUid; + + /* + * Service type. + */ + TServiceType iType; + + /* + * User name. + */ + TBuf16 iUserName; + + /* + * Password. + */ + TBuf16 iPassword; + + /* + * Description of the service. + */ + TBuf16 iDesc; + + /* + * See CIptvService::TFlags. + */ + TUint32 iFlags; + + /* + * Used to identify which application is launched for this service. + */ + TInt32 iApplicationUid; + + /* + * Defines the order in which the service is shown on UI. + */ + TUint32 iDisplayOrder; + + /* + * Provider ID. + */ + TBuf iProviderId; + + /* + * Account management URL. + */ + TBuf iAccountManagementUrl; + + /* + * Last time when epg was updated for this service. + */ + TTime iEpgUpdateTime; + + /* + * Iap name, this set by provisioning since it does not have knowledge of iap ids. + */ + TBuf iIapName; + + /** + * The search url for retrieving search based .rss. + */ + HBufC* iSearchUrl; + + /** + * The record url. + */ + HBufC* iRecordUrl; + + /** + * The scheduled download network setting. + */ + TUint iScheduleDownloadNetwork; + + /** + * The scheduled download time setting. + */ + TUint iScheduleDownloadTime; + + /** + * The scheduled download type setting. + */ + TUint iScheduleDownloadType; + + /* + * The last successfull scheduled download time. + */ + TTime iLastScheduledDownloadTime; + + /** + * Service group ID. + */ + TUint32 iGroupId; + + /** + * Categories in use flag. + */ + TUint8 iUseCategory; + + /** + * The upload url for retrieving upload based .rss. + */ + TBuf16 iUploadProvider; + + /* + * Address to icon url. + */ + TBuf16 iIconUrl; + + }; + +#endif // CIPTVSERVICE_H + +// End of File