--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/videofeeds/clientapi/src/CIptvService.cpp Mon Jan 18 20:21:12 2010 +0200
@@ -0,0 +1,1047 @@
+/*
+* Copyright (c) 2006-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: Holds information of the service.*
+*/
+
+
+
+
+
+// INCLUDE FILES
+#include <e32base.h>
+#include "IptvDebug.h"
+#include <sysutil.h>
+
+#include "ciptvsecureprovisioningparameters.h"
+#include "CIptvService.h"
+
+// EXTERNAL DATA STRUCTURES
+
+// EXTERNAL FUNCTION PROTOTYPES
+
+// CONSTANTS
+
+// MACROS
+
+// LOCAL CONSTANTS AND MACROS
+
+// MODULE DATA STRUCTURES
+
+// LOCAL FUNCTION PROTOTYPES
+
+// FORWARD DECLARATIONS
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CIptvService::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CIptvService::ConstructL()
+ {
+ iIapList = CIptvIapList::NewL();
+ // Create right away since we want SearchUrl() and UploadUrl() to always
+ // return something meaningfull
+ iSearchUrl = HBufC::NewL( 1 );
+ iRecordUrl = HBufC::NewL( 1 );
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CIptvService* CIptvService::NewL()
+ {
+ CIptvService* self = new( ELeave ) CIptvService;
+ CleanupStack::PushL( self );
+ self->ConstructL();
+ CleanupStack::Pop(self);
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::~CIptvService()
+// Destructor.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CIptvService::~CIptvService()
+ {
+ delete iIapList;
+ delete iSearchUrl;
+ delete iRecordUrl;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetId()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetId( TUint32 aId )
+ {
+ IPTVLOGSTRING2_LOW_LEVEL("CIptvService::SetId() aId = %d", aId);
+ iId = aId;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetId()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CIptvService::GetId()
+ {
+ IPTVLOGSTRING2_LOW_LEVEL("CIptvService::GetId() iId = %d", iId);
+ return iId;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetName()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetName( const TDesC16& aName )
+ {
+ if ( aName.Length() > KIptvSmServicesDbNameMaxLength )
+ {
+ return KErrNoMemory;
+ }
+
+ iName = aName;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetName()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TDes16& CIptvService::GetName()
+ {
+ return iName;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetAddress()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetAddress( const TDesC16& aAddress )
+ {
+ if( aAddress.Length() > KIptvSmServicesDbAddressMaxLength )
+ {
+ return KErrNoMemory;
+ }
+
+ iAddress = aAddress;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetAddress()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TDes16& CIptvService::GetAddress()
+ {
+ return iAddress;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetIconPath()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetIconPath( const TDesC16& aIconPath )
+ {
+ if ( aIconPath.Length() > KIptvSmServicesDbIconPathMaxLength )
+ {
+ return KErrNoMemory;
+ }
+
+ iIconPath = aIconPath;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetIconPath()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TDes16& CIptvService::GetIconPath()
+ {
+ return iIconPath;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetEpgPluginUid()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetEpgPluginUid( TUid aEpgPluginUid )
+ {
+ iEpgPluginUid = aEpgPluginUid.iUid;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetEpgPluginUid()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUid CIptvService::GetEpgPluginUid()
+ {
+ TUid uid;
+ uid.iUid = iEpgPluginUid;
+
+ return uid;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetVodPluginUid()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetVodPluginUid( TUid aVodPluginUid )
+ {
+ iVodPluginUid = aVodPluginUid.iUid;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetVodPluginUid()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUid CIptvService::GetVodPluginUid()
+ {
+ TUid uid;
+ uid.iUid = iVodPluginUid;
+
+ return uid;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetIptvPluginUid()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetIptvPluginUid( TUid aIptvPluginUid )
+ {
+ iIptvPluginUid = aIptvPluginUid.iUid;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetIptvPluginUid()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUid CIptvService::GetIptvPluginUid()
+ {
+ TUid uid;
+ uid.iUid = iIptvPluginUid;
+
+ return uid;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetType()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetType( TServiceType aType )
+ {
+ iType = aType;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetType()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CIptvService::TServiceType CIptvService::GetType()
+ {
+ return ( CIptvService::TServiceType )iType;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetIapList()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetIapListL( CIptvIapList& aIapList )
+ {
+ if ( aIapList.Count() > KIptvSmServicesDbMaxIaps )
+ {
+ IPTVLOGSTRING_LOW_LEVEL("CIptvService:: SetIapListL() Max IAP count exceeded, aborting");
+ return KErrArgument;
+ }
+
+ iIapList->SetL( aIapList );
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetIapList()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CIptvIapList& CIptvService::GetIapList()
+ {
+ return *iIapList;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetUserName()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetUserName( const TDesC16& aUserName )
+ {
+ if ( aUserName.Length() > KIptvSmPasswordsDbUserNameMaxLength )
+ {
+ return KErrNoMemory;
+ }
+
+ iUserName = aUserName;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetUserName()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TDes16& CIptvService::GetUserName()
+ {
+ return iUserName;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetPassword()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetPassword( const TDesC16& aPassword )
+ {
+ if ( aPassword.Length() > KIptvSmPasswordsDbPasswordMaxLength )
+ {
+ return KErrNoMemory;
+ }
+
+ iPassword = aPassword;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetPassword()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TDes16& CIptvService::GetPassword()
+ {
+ return iPassword;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetDesc()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetDesc( const TDesC16& aDesc )
+ {
+ if ( aDesc.Length() > KIptvSmServicesDbDescMaxLength )
+ {
+ return KErrNoMemory;
+ }
+
+ iDesc = aDesc;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetDesc()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TDes16& CIptvService::GetDesc()
+ {
+ return iDesc;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetFlags()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetFlags( TUint32 aFlags )
+ {
+ iFlags = aFlags;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetFlags()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CIptvService::GetFlags()
+ {
+ return iFlags;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetApplicationUid()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetApplicationUid( TInt32 aUid )
+ {
+ iApplicationUid = aUid;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetApplicationUid()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt32 CIptvService::GetApplicationUid()
+ {
+ return iApplicationUid;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetDisplayOrder()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetDisplayOrder( TUint32 aOrder )
+ {
+ iDisplayOrder = aOrder;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetDisplayOrder()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CIptvService::GetDisplayOrder()
+ {
+ return iDisplayOrder;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetProviderId()
+//
+// -----------------------------------------------------------------------------
+//
+
+EXPORT_C TInt CIptvService::SetProviderId( const TDesC& aProviderId )
+ {
+ if ( aProviderId.Length() > KIptvSmServicesDbProviderIdMaxLength )
+ {
+ return KErrOverflow;
+ }
+
+ iProviderId = aProviderId;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetProviderId()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TDesC& CIptvService::GetProviderId()
+ {
+ return iProviderId;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetAccountManagementUrl()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetAccountManagementUrl(
+ const TDesC& aAccountManagementUrl )
+ {
+ if ( aAccountManagementUrl.Length() >
+ KIptvSmServicesDbAccountManagementUrlMaxLength )
+ {
+ return KErrOverflow;
+ }
+
+ iAccountManagementUrl = aAccountManagementUrl;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetAccountManagementUrl()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TDesC& CIptvService::GetAccountManagementUrl()
+ {
+ return iAccountManagementUrl;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetEpgUpdateTimeL()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetEpgUpdateTimeL( const TTime& aTime )
+ {
+ iEpgUpdateTime = aTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetEpgUpdateTimeL()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TTime& CIptvService::GetEpgUpdateTimeL()
+ {
+ return iEpgUpdateTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetIapNameL()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetIapNameL( const TDesC& aIapName )
+ {
+ if ( aIapName.Length() > KIptvSmServicesDbIapNameMaxLength )
+ {
+ User::Leave( KErrOverflow );
+ }
+
+ iIapName = aIapName;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetIapNameL()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIptvService::GetIapNameL()
+ {
+ return iIapName;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetSearchUrl()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetSearchUrlL( const TDesC& aSearchUrl )
+ {
+ if ( aSearchUrl.Length() > KIptvSmServicesDbSearchUrlMaxLength )
+ {
+ User::Leave( KErrOverflow );
+ }
+
+ delete iSearchUrl;
+ iSearchUrl = NULL;
+ iSearchUrl = aSearchUrl.AllocL();
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SearchUrl()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIptvService::SearchUrl() const
+ {
+ return *iSearchUrl;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetRecordUrlL()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetRecordUrlL( const TDesC& aRecordUrl )
+ {
+ IPTVLOGSTRING2_LOW_LEVEL("CIptvService::SetRecordUrlL(): aRecordUrl = %S", &aRecordUrl);
+
+ if ( aRecordUrl.Length() > KIptvSmServicesDbRecordUrlMaxLength )
+ {
+ IPTVLOGSTRING_LOW_LEVEL ("Record URL is too long -> User::Leave( KErrOverflow");
+ User::Leave( KErrOverflow );
+ }
+
+ delete iRecordUrl;
+ iRecordUrl = NULL;
+ iRecordUrl = HBufC::NewL( aRecordUrl.Length() );
+ iRecordUrl->Des() = aRecordUrl;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::RecordUrl()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIptvService::RecordUrl() const
+ {
+ return *iRecordUrl;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetScheduleDlNetwork()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetScheduleDlNetwork( TUint aScheduleDlNetwork )
+ {
+ iScheduleDownloadNetwork = aScheduleDlNetwork;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::ScheduleDlNetwork()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CIptvService::ScheduleDlNetwork() const
+ {
+ return iScheduleDownloadNetwork;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetScheduleDlTime()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetScheduleDlTime( TUint aScheduleDlTime )
+ {
+ iScheduleDownloadTime = aScheduleDlTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::ScheduleDlTime()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CIptvService::ScheduleDlTime() const
+ {
+ return iScheduleDownloadTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetScheduleDlType()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetScheduleDlType( TUint aScheduleDlType )
+ {
+ iScheduleDownloadType = aScheduleDlType;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::ScheduleDlType()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint CIptvService::ScheduleDlType() const
+ {
+ return iScheduleDownloadType;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetLastScheduledDownloadTimeL
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetScheduledLastDownloadTime( const TTime& aTime )
+ {
+ iLastScheduledDownloadTime = aTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetLastScheduledDownloadTimeL
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TTime& CIptvService::GetScheduledLastDownloadTime() const
+ {
+ return iLastScheduledDownloadTime;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetGroupId()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetGroupId( TUint32 aGroupId )
+ {
+ iGroupId = aGroupId;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetGroupId()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CIptvService::GetGroupId()
+ {
+ return iGroupId;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetUseCategory()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::SetUseCategory( const TBool& aUseCategory )
+ {
+ iUseCategory = ( TUint8 )aUseCategory;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetUseCategory()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CIptvService::GetUseCategory()
+ {
+ return ( iUseCategory != 0 );
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetUploadProvider()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetUploadProvider( const TDesC& aProvider )
+ {
+ if ( aProvider.Length() > KIptvSmServicesDbNameMaxLength )
+ {
+ return KErrNoMemory;
+ }
+
+ iUploadProvider = aProvider;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetUploadProvider()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C const TDesC& CIptvService::GetUploadProvider() const
+ {
+ return iUploadProvider;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SetIconUrl()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetIconUrl( const TDesC16& aAddress )
+ {
+ if ( aAddress.Length() > KIptvSmServicesDbAddressMaxLength )
+ {
+ return KErrNoMemory;
+ }
+
+ iIconUrl = aAddress;
+ return KErrNone;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetIconUrl()
+//
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TDes16& CIptvService::GetIconUrl()
+ {
+ return iIconUrl;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::Set()
+// This format is used when sending service data over IPC of when handling
+// arrays of services.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TInt CIptvService::SetL( const TDesC8& aService )
+ {
+ RDesReadStream readStream;
+ readStream.Open(aService);
+ readStream.PushL(); // 1->
+ InternalizeL(readStream);
+ readStream.Pop(); // <-1
+ readStream.Close();
+
+ return KErrNone; //successful
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::GetL()
+// This format is used when sending service data over IPC and handling
+// arrays of services.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC8* CIptvService::GetL()
+ {
+ HBufC8* serviceDes;
+ serviceDes = HBufC8::NewL( CountSize() + 1 );
+ CleanupStack::PushL( serviceDes ); // 1->
+
+ RDesWriteStream writeStream;
+ TPtr8 servicePtr8(serviceDes->Des());
+ writeStream.Open(servicePtr8);
+ writeStream.PushL(); // 2->
+ ExternalizeL( writeStream );
+ writeStream.Pop(); // <-2
+ writeStream.Close();
+
+ CleanupStack::Pop(serviceDes); // <-1 //ownership moves to caller
+ return serviceDes;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::CountSize()
+// Returns binary descriptor size with current member values.
+// Size is in 8-bit bytes.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CIptvService::CountSize()
+ {
+ return CountExternalizeSize();
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::InternalizeL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::InternalizeL( RDesReadStream& aStream )
+ {
+ iId = aStream.ReadInt32L();
+
+ CIptvUtil::ReadDesFromStreamL( iName, aStream );
+ CIptvUtil::ReadDesFromStreamL( iAddress, aStream );
+ CIptvUtil::ReadDesFromStreamL( iIconPath, aStream );
+
+ iEpgPluginUid = aStream.ReadInt32L();
+ iVodPluginUid = aStream.ReadInt32L();
+ iIptvPluginUid = aStream.ReadInt32L();
+
+ iType = ( TServiceType )aStream.ReadInt16L();
+
+ iIapList->InternalizeL( aStream );
+
+ CIptvUtil::ReadDesFromStreamL( iUserName, aStream );
+ CIptvUtil::ReadDesFromStreamL( iPassword, aStream );
+ CIptvUtil::ReadDesFromStreamL( iDesc, aStream );
+
+ iFlags = aStream.ReadInt32L();
+ iApplicationUid = aStream.ReadInt32L();
+ iDisplayOrder = aStream.ReadInt32L();
+
+ CIptvUtil::ReadDesFromStreamL( iProviderId, aStream );
+ CIptvUtil::ReadDesFromStreamL( iAccountManagementUrl, aStream );
+
+ //iEpgUpdateTime
+ TUint low = static_cast<TUint>( aStream.ReadUint32L() );
+ TUint high = static_cast<TUint>( aStream.ReadUint32L() );
+ TInt64 time;
+ time = high;
+ time = time << 32;
+ time |= low;
+ iEpgUpdateTime = time;
+
+ CIptvUtil::ReadDesFromStreamL( iIapName, aStream );
+
+ // Fill iSearchUrl, can't use ReadDesFromStreamL since we need to know length for HBufC creation
+ TInt length( aStream.ReadUint16L() );
+ delete iSearchUrl;
+ iSearchUrl = NULL;
+ iSearchUrl = HBufC::NewL( length );
+ TPtr searchUrlPtr( iSearchUrl->Des() );
+ for ( TInt i = 0; i < length; i++ )
+ {
+ searchUrlPtr.Append( aStream.ReadUint16L() );
+ }
+
+ iScheduleDownloadNetwork = aStream.ReadInt32L();
+ iScheduleDownloadTime = aStream.ReadInt32L();
+ iScheduleDownloadType = aStream.ReadInt32L();
+
+ low = static_cast<TUint>( aStream.ReadUint32L() );
+ high = static_cast<TUint>( aStream.ReadUint32L() );
+ time = high;
+ time = time << 32;
+ time |= low;
+ iLastScheduledDownloadTime = time;
+
+ iGroupId = aStream.ReadInt32L();
+ iUseCategory = aStream.ReadInt8L();
+ CIptvUtil::ReadDesFromStreamL( iUploadProvider, aStream );
+ CIptvUtil::ReadDesFromStreamL( iIconUrl, aStream );
+
+ // Fill iRecordUrl, can't use ReadDesFromStreamL since we need to
+ // know length for HBufC creation
+ length = aStream.ReadUint16L();
+ delete iRecordUrl;
+ iRecordUrl = NULL;
+ iRecordUrl = HBufC::NewL( length );
+ TPtr recordUrlPtr( iRecordUrl->Des() );
+ for ( TInt i = 0; i < length; i++ )
+ {
+ recordUrlPtr.Append( aStream.ReadUint16L() );
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::ExternalizeL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CIptvService::ExternalizeL( RDesWriteStream& aStream ) const
+ {
+ aStream.WriteInt32L( iId );
+
+ CIptvUtil::WriteDesToStreamL( iName, aStream );
+ CIptvUtil::WriteDesToStreamL( iAddress, aStream );
+ CIptvUtil::WriteDesToStreamL( iIconPath, aStream );
+
+ aStream.WriteInt32L( iEpgPluginUid );
+ aStream.WriteInt32L( iVodPluginUid );
+ aStream.WriteInt32L( iIptvPluginUid );
+
+ aStream.WriteInt16L( iType );
+
+ iIapList->ExternalizeL( aStream );
+
+ CIptvUtil::WriteDesToStreamL( iUserName, aStream );
+ CIptvUtil::WriteDesToStreamL( iPassword, aStream );
+ CIptvUtil::WriteDesToStreamL( iDesc, aStream );
+
+ aStream.WriteInt32L( iFlags );
+ aStream.WriteInt32L( iApplicationUid );
+ aStream.WriteInt32L( iDisplayOrder );
+
+ CIptvUtil::WriteDesToStreamL( iProviderId, aStream );
+ CIptvUtil::WriteDesToStreamL( iAccountManagementUrl, aStream );
+
+ aStream.WriteUint32L( iEpgUpdateTime.Int64() & 0x00000000FFFFFFFFULL );
+ aStream.WriteUint32L( ( iEpgUpdateTime.Int64() & 0xFFFFFFFF00000000ULL ) >> 32 );
+
+ CIptvUtil::WriteDesToStreamL( iIapName, aStream );
+
+ TPtr searchUrlPtr( iSearchUrl->Des() );
+ CIptvUtil::WriteDesToStreamL( searchUrlPtr, aStream );
+
+ aStream.WriteInt32L( iScheduleDownloadNetwork );
+ aStream.WriteInt32L( iScheduleDownloadTime );
+ aStream.WriteInt32L( iScheduleDownloadType );
+ aStream.WriteUint32L(
+ iLastScheduledDownloadTime.Int64() & 0x00000000FFFFFFFFULL );
+ aStream.WriteUint32L(
+ ( iLastScheduledDownloadTime.Int64() & 0xFFFFFFFF00000000ULL ) >> 32 );
+
+ aStream.WriteInt32L( iGroupId );
+ aStream.WriteInt8L( iUseCategory );
+ CIptvUtil::WriteDesToStreamL( iUploadProvider, aStream );
+ CIptvUtil::WriteDesToStreamL( iIconUrl, aStream );
+ TPtr recordUrlPtr( iRecordUrl->Des() );
+ CIptvUtil::WriteDesToStreamL( recordUrlPtr, aStream );
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::CountExternalizeSize()
+// Return externalize size in 8bit bytes.
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TUint32 CIptvService::CountExternalizeSize()
+ {
+ return 4 //TUint32 iId // 1
+ + 2 + ( iName.Length() * 2 ) // 2
+ + 2 + ( iAddress.Length() * 2 ) // 3
+ + 2 + ( iIconPath.Length() * 2 ) // 4
+ + 4 //TUint32 iEpdPluginUid // 5
+ + 4 //TUint32 iVodPlugingUid // 6
+ + 4 //TUint32 iIptvPluginUid // 7
+ + 2 //TUint16 iType // 8
+ + ( iIapList->CountExternalizeSize() ) // 9
+ + 2 + ( iUserName.Length() * 2 ) // 10
+ + 2 + ( iPassword.Length() * 2 ) // 11
+ + 2 + ( iDesc.Length() * 2 ) // 12
+ + 4 //TUint32 iFlags // 13
+ + 4 //TInt32 iApplicationUid // 14
+ + 4 //TUint32 iDisplayOrder // 15
+ + 2 + ( iProviderId.Length() * 2 ) // 16
+ + 2 + ( iAccountManagementUrl.Length() * 2 ) // 17
+ + 8 + //TTime iEpgUpdateTime // 18
+ + 2 + ( iIapName.Length() * 2 ) // 19
+ + 2 + ( iSearchUrl->Length() * 2 ) // 20
+ + 4 //TUint iScheduleDownloadNetwork // 21
+ + 4 //TUint iScheduleDownloadTime // 22
+ + 4 //TUint iScheduleDownloadType // 23
+ + 8 //TTime iLastScheduledDownloadTime // 24
+ + 4 + //TUint32 iGroupId // 25
+ + 1 + //TUint8 iUseCategory // 26
+ + 2 + ( iUploadProvider.Length() * 2 ) // 27
+ + 2 + ( iIconUrl.Length() * 2 ) // 28
+ + 2 + ( iRecordUrl->Length() * 2 ); // 29
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::CompareL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TBool CIptvService::CompareL( CIptvService& aService )
+ {
+ IPTVLOGSTRING_LOW_LEVEL( "CIptvService::CompareL() start" );
+
+ HBufC8* serviceStreamed = aService.GetL();
+ CleanupStack::PushL( serviceStreamed ); // 1->
+ HBufC8* thisServiceStreamed = GetL();
+ CleanupStack::PushL( thisServiceStreamed ); // 2->
+
+ TBool result( EFalse );
+ if ( serviceStreamed->Des() == thisServiceStreamed->Des() )
+ {
+ IPTVLOGSTRING_LOW_LEVEL("CIptvService:: services are equal");
+ result = ETrue;
+ }
+ else
+ {
+ IPTVLOGSTRING_LOW_LEVEL("CIptvService:: services are not equal");
+ result = EFalse;
+ }
+
+ CleanupStack::PopAndDestroy( thisServiceStreamed ); // <-2
+ CleanupStack::PopAndDestroy( serviceStreamed ); // <-1
+
+ IPTVLOGSTRING_LOW_LEVEL("CIptvService::CompareL() exit");
+
+ return result;
+ }
+
+// -----------------------------------------------------------------------------
+// CIptvService::SecureProvisioningUrlParametersL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C HBufC* CIptvService::SecureProvisioningUrlParametersL()
+ {
+ CIptvSecureProvisioningParameters* spp = CIptvSecureProvisioningParameters::NewL();
+ CleanupStack::PushL( spp ); // 1->
+
+ HBufC* parameters = spp->SecureProvisioningUrlParametersL();
+ CleanupStack::PopAndDestroy( spp ); // <-1
+ return parameters;
+ }
+