internetradio2.0/ircommon/src/irisdspreset.cpp
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 18 Aug 2010 09:40:26 +0300
changeset 14 896e9dbc5f19
permissions -rw-r--r--
Revision: 201031 Kit: 201033

/*
* 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 "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: iSDS preset structure.
 *
 */

#include <s32strm.h>

#include "irchannelserverurl.h"
#include "irdebug.h"
#include "irisdspreset.h"

const TInt KUrlArrayMaxLength = 128;
const TInt KUrlForBitrateMaxLength = 128;

_LIT( KComma, "," );

// ======== LOCAL FUNCTIONS ========

// ======== MEMBER FUNCTIONS ========

// ---------------------------------------------------------------------------
// CIRIsdsPreset::NewL()
// Static function
// standard two phased constructor
// ---------------------------------------------------------------------------
//
EXPORT_C CIRIsdsPreset* CIRIsdsPreset::NewL()
	{
	IRLOG_DEBUG( "CIRIsdsPreset::NewL - Entering" );
	CIRIsdsPreset* self = CIRIsdsPreset::NewLC();
	CleanupStack::Pop( self );
	IRLOG_DEBUG( "CIRIsdsPreset::NewL - Exiting." );
	return self;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::NewLC()
// Static function
// standard two phased constructor
// ---------------------------------------------------------------------------
//
EXPORT_C CIRIsdsPreset* CIRIsdsPreset::NewLC()
	{
	IRLOG_DEBUG( "CIRIsdsPreset::NewLC - Entering" );
	CIRIsdsPreset* self = new( ELeave )CIRIsdsPreset;
	CleanupStack::PushL( self );
	self->ConstructL();
	IRLOG_DEBUG( "CIRIsdsPreset::NewLC - Exiting." );
	return self;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::~CIRIsdsPreset()
// standard C++ destructor
// ---------------------------------------------------------------------------
//
CIRIsdsPreset::~CIRIsdsPreset()
	{
	IRLOG_DEBUG( "CIRIsdsPreset::~CIRIsdsPreset - Entering" );
	iName.Close();
	iLanguageCode.Close();
	iLanguage.Close();
	iCountryCode.Close();
	iCountry.Close();
	iLastModified.Close();
	iMusicStoreStatus.Close();
	iAdvertisementUrl.Close();
	iAdvertisementInUse.Close();
	iImgUrl.Close();
	iLogoData.Close();
	iDescription.Close();
	iShortDesc.Close();
	iGenereName.Close();
	iGenereId.Close();

	if ( iUrlArray )
		{
		iUrlArray->ResetAndDestroy();
		}
	
	delete iUrlArray;
	IRLOG_DEBUG( "CIRIsdsPreset::~CIRIsdsPreset - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::CIRIsdsPreset()
// default C++ constructor
// standard two phased constructor
// ---------------------------------------------------------------------------
//
CIRIsdsPreset::CIRIsdsPreset()
	{
	IRLOG_DEBUG( "CIRIsdsPreset::CIRIsdsPreset" );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::ConstructL()
// standard second phase constructor
// ---------------------------------------------------------------------------
//
void CIRIsdsPreset::ConstructL()
	{
	IRLOG_DEBUG( "CIRIsdsPreset::ConstructL - Entering" );
	iUrlArray = new( ELeave )CArrayPtrFlat<CIRChannelServerUrl>( 
		KUrlArrayMaxLength );
	IRLOG_DEBUG( "CIRIsdsPreset::ConstructL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetId()
// Function to set iPresetId from a TDesC
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetId( const TDesC& aId )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetId - Entering" );
	TLex conv( aId );
	conv.Val( iPresetId );
	IRLOG_DEBUG( "CIRIsdsPreset::SetId - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetId()
// Function to set iPresetId
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetId( TInt aId )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetId(TInt) - Entering" );
	iPresetId = aId;
	IRLOG_DEBUG( "CIRIsdsPreset::SetId(TInt) - Exiting." );
	}



// ---------------------------------------------------------------------------
//CIRIsdsPreset::SetNameL()
//Function to set iName from a TDesC
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetNameL( const TDesC& aName )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetNameL - Entering" );
	iName.Close();
	iName.CreateL( aName );
	IRLOG_DEBUG( "CIRIsdsPreset::SetNameL - Exiting." );
	}


// ---------------------------------------------------------------------------
//CIRIsdsPreset::SetLangInfoL()
//Function to set iLanguageCode, iLanguage
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetLangInfoL( const TDesC& aLangId,
	const TDesC& aLangName )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetLangInfoL - Entering" );
    SetLangCodeL( aLangId );
    SetLangL( aLangName );
	IRLOG_DEBUG( "CIRIsdsPreset::SetLangInfoL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetLangCodeL()
// Function to set iLanguageCode from a TDesC
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetLangCodeL( const TDesC& aLangId )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetLangCodeL - Entering" );
	iLanguageCode.Close();
	iLanguageCode.CreateL( aLangId );
	IRLOG_DEBUG( "CIRIsdsPreset::SetLangCodeL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetLangL()
// Function to set iLanguage from a TDesC
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetLangL( const TDesC& aLangName )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetLangL - Entering" );
	iLanguage.Close();
	iLanguage.CreateL( aLangName );
	IRLOG_DEBUG( "CIRIsdsPreset::SetLangL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetCountryCodeL()
// Function to set iCountryCode from a TDesC
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetCountryCodeL( const TDesC& aCountryId )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryCodeL - Entering" );
	iCountryCode.Close();
	iCountryCode.CreateL( aCountryId );
	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryCodeL - Exiting." );
	}


// ---------------------------------------------------------------------------
//CIRIsdsPreset::SetCountryNameL()
//Function to set iCountry from a TDesC
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetCountryNameL( const TDesC& aCountryName )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryNameL - Entering" );
	iCountry.Close();
	iCountry.CreateL( aCountryName );
	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryNameL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetLangInfoL()
// Function to set iCountryCode, iCountry
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetCountryInfoL( const TDesC& aCountryId,
	const TDesC& aCountryName )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryInfoL - Entering" );
	SetCountryCodeL( aCountryId );
    SetCountryNameL( aCountryName );
	IRLOG_DEBUG( "CIRIsdsPreset::SetCountryInfoL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetLastModifiedTimeL()
// Function to set iLastModified
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetLastModifiedTimeL( const TDesC& aLastModified )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetLastModifiedTimeL - Entering" );
	iLastModified.Close();
	iLastModified.CreateL( aLastModified );
	IRLOG_DEBUG( "CIRIsdsPreset::SetLastModifiedTimeL - Exiting." );
	}


// ---------------------------------------------------------------------------
//CIRIsdsPreset::SetGenreInfoL()
//Function to set iGenereName, iGenereId
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetGenreInfoL( const TDesC& aGenreId,
	const TDesC& aGenreName )
	{
	IRLOG_DEBUG( "CIRIsdsPresetL::SetGenreInfoL - Entering" );

	if ( iGenereName.Length() )
		{
		RBuf newBuf;
		newBuf.CreateL(
		    iGenereName.Length() + aGenreName.Length() + KComma().Length() );
		newBuf.Append( iGenereName );
		newBuf.Append( KComma );
		newBuf.Append( aGenreName );
		iGenereName.Close();
		iGenereName.CreateL( newBuf );
		newBuf.Close();
		}
	
	if ( iGenereId.Length() )
		{
		RBuf newBuf;
        newBuf.CreateL(
            iGenereId.Length() + aGenreId.Length() + KComma().Length() );
        newBuf.Append( iGenereId );
        newBuf.Append( KComma );
        newBuf.Append( aGenreId );
        iGenereId.Close();
        iGenereId.CreateL( newBuf );
        newBuf.Close();
		}
	
	if ( !iGenereName.Length() )
		{
		iGenereName.Close();
		iGenereName.CreateL( aGenreName );
		}
	
	if ( !iGenereId.Length() )
		{
		iGenereId.Close();
		iGenereId.CreateL( aGenreId );
		}

	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreInfoL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetImgUrlL()
// Function to set iImgUrl
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetImgUrlL( const TDesC& aImgUrl )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetImgUrlL - Entering" );
	iImgUrl.Close();
	iImgUrl.CreateL( aImgUrl );
	IRLOG_DEBUG( "CIRIsdsPreset::SetImgUrlL - Exiting." );
	}

// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetLogoDataL()
// Function to set LogoData
// ---------------------------------------------------------------------------
//

EXPORT_C void CIRIsdsPreset::SetLogoDataL( const TDesC8& aData )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetLogoDataL - Entering" );

	iLogoData.Close();
	iLogoData.CreateL( aData );

	IRLOG_DEBUG( "CIRIsdsPreset::SetLogoDataL - Exiting." );
	}

// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetAdvertisementInUseL()
// Function to set iAdvertisementInUse
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetAdvertisementInUseL( 
	const TDesC& aAdvertisementInUse )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementInUseL - Entering" );
	iAdvertisementInUse.Close();
	iAdvertisementInUse.CreateL( aAdvertisementInUse );
	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementInUseL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetDescriptionL()
// Function to set iDescription
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset:: SetDescriptionL( const TDesC& aDescription )
	{
    IRLOG_DEBUG( "CIRIsdsPreset::SetDescriptionL - Entering" );
    iDescription.Close();
    iDescription.CreateL( aDescription );
	IRLOG_DEBUG( "CIRIsdsPreset::SetDescriptionL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetAdvertisementUrlL()
// Function to set iAdvertisementUrl
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetAdvertisementUrlL( 
	const TDesC& aAdvertisementUrl )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementUrlL - Entering" );
	iAdvertisementUrl.Close();
	iAdvertisementUrl.CreateL( aAdvertisementUrl );
	IRLOG_DEBUG( "CIRIsdsPreset::SetAdvertisementUrlL - Exiting." );
	}


// ---------------------------------------------------------------------------
//CIRIsdsPreset::SetUrlCount()
//Function to set iChannelUrlCount
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetUrlCount()
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Entering" );
	iChannelUrlCount = iUrlArray->Count();
	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetShortDescL()
// Function to set iShortDesc
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetShortDescL( const TDesC& aShortDesc )
	{
    IRLOG_DEBUG( "CIRIsdsPreset::SetShortDescL - Entering" );
    iShortDesc.Close();
    iShortDesc.CreateL( aShortDesc );
	IRLOG_DEBUG( "CIRIsdsPreset::SetShortDescL - Exiting." );
	}

// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetGenreNameL()
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetGenreNameL( const TDesC& aGenreName )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreNameL - Entering" );
	iGenereName.Close();
	iGenereName.CreateL( aGenreName );
	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreNameL - Exiting" );
	}

// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetGenreIdL()
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetGenreIdL( const TDesC& aGenreId )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreIdL - Entering" );
	iGenereId.Close();
	iGenereId.CreateL( aGenreId );
	IRLOG_DEBUG( "CIRIsdsPreset::SetGenreIdL - Exiting" );
	}

// ---------------------------------------------------------------------------
//CIRIsdsPreset::SetUrlCount()
//Function to set iChannelUrlCount
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetUrlCount( TInt aCnt )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Entering" );
	iChannelUrlCount = aCnt;
	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlCount - Exiting." );
	}

// ---------------------------------------------------------------------------
//CIRIsdsPreset::SetUrl()
//Function to set Url parameter
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetUrlL( const TDesC& aServerName,
	const TDesC& aUrl, const TDesC& aBitrate )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., const TDesC) - Entering" );
	CIRChannelServerUrl * hold = CIRChannelServerUrl::NewL();
	hold->SetServerName( aServerName );
	hold->SetServerUrl( aUrl );
	TLex conv( aBitrate );
	TInt conVal = 0;
	conv.Val( conVal );
	//if a negative value comes,set the bitrate to 0,so that it is accessable
	//to all the setting combination
	if ( conVal < 0)
		{
		conVal = 0;
		}
	
	hold->SetBitRate( conVal );
	iUrlArray->AppendL( hold );
	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., const TDesC) - Exiting." );
	}


// ---------------------------------------------------------------------------
//CIRIsdsPreset::SetUrl()
//Function to set Url parameter
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetUrlL( const TDesC& aServerName, 
	const TDesC& aUrl, TInt aBitrate )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., TInt) - Entering" );
	CIRChannelServerUrl * hold = CIRChannelServerUrl::NewL();
	hold->SetServerName( aServerName );
	hold->SetServerUrl( aUrl );

	//if a negative value comes,set the bitrate to 0,so that it is accessable
	//to all the setting combination
	if ( aBitrate < 0)
		{
		aBitrate = 0;
		}
	
	hold->SetBitRate( aBitrate );
	iUrlArray->AppendL( hold );
	IRLOG_DEBUG( "CIRIsdsPreset::SetUrlL(..., TInt) - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::SetChannelType()
// Function to set iType
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetChannelType( TInt aType )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetChannelType - Entering" );

	if ( aType != EUserDefined && aType != EIsdsPreset && aType != EAdhoc )
		{
		aType = EUserDefined;
		}
	
	iType = aType;
	IRLOG_DEBUG( "CIRIsdsPreset::SetChannelType - Exiting." );
	}

// ---------------------------------------------------------------------------
//CIRIsdsPreset::SetMusicStoreStatusL()
//Function to set iMusicStoreStatus parameter
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::SetMusicStoreStatusL( const TDesC& aMusicStoreStatus )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SetMusicStoreStatusL - Entering" );
	iMusicStoreStatus.Close();
	iMusicStoreStatus.CreateL( aMusicStoreStatus );	
	IRLOG_DEBUG( "CIRIsdsPreset::SetMusicStoreStatusL - Exiting" );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::ExternalizeL()
// externalizes the data
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::ExternalizeL( RWriteStream& aWriteStream )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::ExternalizeL - Entering" );
//! externalize TInts s
	aWriteStream.WriteInt32L(iPresetId);
	aWriteStream.WriteInt32L(iType);
	aWriteStream.WriteInt32L(iChannelUrlCount);

	// Externalize RBufs
    aWriteStream << iLanguageCode;
    aWriteStream << iLanguage;
    aWriteStream << iCountryCode;
    aWriteStream << iCountry;
    aWriteStream << iGenereName;
    aWriteStream << iGenereId;
    aWriteStream << iName;
    aWriteStream << iLastModified;
    aWriteStream << iAdvertisementUrl;
    aWriteStream << iAdvertisementInUse;
    aWriteStream << iImgUrl;
    aWriteStream << iDescription;
    aWriteStream << iShortDesc;
	aWriteStream << iMusicStoreStatus;
	aWriteStream << iLogoData;

	for ( TInt cnt=0; cnt < iChannelUrlCount; ++cnt )
		{
		GetUrl( cnt ).ExternalizeL( aWriteStream );
		}
	
	IRLOG_DEBUG( "CIRIsdsPreset::ExternalizeL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::InternalizeL()
// internalizes the data
// ---------------------------------------------------------------------------
//
EXPORT_C void CIRIsdsPreset::InternalizeL( RReadStream& aReadStream )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::InternalizeL - Entering" );
	//! Internalize TInts s
	iPresetId=aReadStream.ReadInt32L();
	iType=aReadStream.ReadInt32L();
	iChannelUrlCount=aReadStream.ReadInt32L();

	// Internalize RBufs
	iLanguageCode.Close();
	iLanguageCode.CreateL( aReadStream, KMaxTInt );

	iLanguage.Close();
	iLanguage.CreateL( aReadStream, KMaxTInt );

	iCountryCode.Close();
	iCountryCode.CreateL( aReadStream, KMaxTInt );

	iCountry.Close();
	iCountry.CreateL( aReadStream, KMaxTInt );

	iGenereName.Close();
	iGenereName.CreateL( aReadStream, KMaxTInt );

	iGenereId.Close();
	iGenereId.CreateL( aReadStream, KMaxTInt );

	iName.Close();
	iName.CreateL( aReadStream, KMaxTInt );

	iLastModified.Close();
	iLastModified.CreateL( aReadStream, KMaxTInt );

	iAdvertisementUrl.Close();
	iAdvertisementUrl.CreateL( aReadStream, KMaxTInt );

	iAdvertisementInUse.Close();
	iAdvertisementInUse.CreateL( aReadStream, KMaxTInt );

	iImgUrl.Close();
	iImgUrl.CreateL( aReadStream, KMaxTInt );

	iDescription.Close();
	iDescription.CreateL( aReadStream, KMaxTInt );

	iShortDesc.Close();
	iShortDesc.CreateL( aReadStream, KMaxTInt );

	iMusicStoreStatus.Close();
	iMusicStoreStatus.CreateL( aReadStream, KMaxTInt );


    iUrlArray->ResetAndDestroy();

	iLogoData.Close();
	iLogoData.CreateL(aReadStream, KMaxTInt);
		
	CIRChannelServerUrl* url = NULL;
	for ( TInt cnt = 0; cnt < iChannelUrlCount; ++cnt )
		{
		url = CIRChannelServerUrl::NewLC();
		url->InternalizeL( aReadStream );
		iUrlArray->AppendL( url );
		CleanupStack::Pop( url );
		}
	
	IRLOG_DEBUG( "CIRIsdsPreset::InternalizeL - Exiting." );
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetId()
// Function to get iPresetId
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CIRIsdsPreset::GetId() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetId" );
	return iPresetId;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetId()
// Function to get iName
// ---------------------------------------------------------------------------
//
EXPORT_C  const TDesC& CIRIsdsPreset::GetName() const 
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetName" );
	return iName;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetLangId()
// Function to get iLanguageCode
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetLangId() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetLangId" );
	return iLanguageCode;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetLangName()
// Function to get iLanguage
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetLangName() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetLangName" );
	return iLanguage;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetCountryId()
// Function to get iCountryCode
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetCountryId() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetCountryId" );
	return iCountryCode;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetCountryName()
// Function to get iCountry
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetCountryName() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetCountryName" );
	return iCountry;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetLastModifiedTime()
// Function to get iLastModified
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetLastModifiedTime() const 
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetLastModifiedTime" );
	return iLastModified;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetDescription()
// Function to get iDescription
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetDescription() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetDescription" );
	return iDescription;
	}

// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetShortDescription()
// Function to get iDescription
// ---------------------------------------------------------------------------
//
EXPORT_C  const TDesC& CIRIsdsPreset::GetShortDescription() const 
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetShortDescription" );
	return iShortDesc;
	}

// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetChannelType()
// Function to get iType
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CIRIsdsPreset::GetChannelType() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelType" );
	return iType;
	}

// ---------------------------------------------------------------------------
//CIRIsdsPreset::GetGenreId()
//Function to get iGenereId
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetGenreId() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetGenreId" );
	return iGenereId;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetGenreName()
// Function to get iGenereName
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetGenreName() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetGenreName" );
	return iGenereName;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetAdvertisementUrl()
// Function to get iAdvertisementUrl
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetAdvertisementUrl() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetAdvertisementUrl" );
	return iAdvertisementUrl;
	}

// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetAdvertisementInUse()
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetAdvertisementInUse() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetAdvertisementInUse" );
	return iAdvertisementInUse;
	}

// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetImgUrl()
// Function to get iImgUrl
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetImgUrl() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetImgUrl" );
	return iImgUrl;
	}

// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetUrlCount()
// Function to get iChannelUrlCount
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CIRIsdsPreset::GetUrlCount() const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlCount" );
	return iChannelUrlCount;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetUrl()
// Function to get iLanguageCode
// ---------------------------------------------------------------------------
//
EXPORT_C CIRChannelServerUrl& CIRIsdsPreset::GetUrl( TInt aInt )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetUrl" );
	ASSERT( aInt >= 0 && aInt < iUrlArray->Count() ); 
	return ( ( *iUrlArray->At( aInt ) ) );
	}


EXPORT_C  const TDesC& CIRIsdsPreset::GetMusicStoreStatus() const 
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetMusicStoreStatus" );
	return iMusicStoreStatus;	
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetLogoData()
// Function to get LogoData
// ---------------------------------------------------------------------------
//
EXPORT_C  const TDesC8& CIRIsdsPreset::GetLogoData() const 
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetLogoData" );
	return iLogoData;
	}


// ---------------------------------------------------------------------------
//CIRIsdsPreset::=()
//standard C++ copy constructor(deep copy)
// ---------------------------------------------------------------------------
//
EXPORT_C CIRIsdsPreset& CIRIsdsPreset::operator=( const CIRIsdsPreset& aPreset )
	{
    IRLOG_DEBUG( "CIRIsdsPreset::operator=  - Entering" );

    if ( &aPreset == this)
		{
		return *this;
		}

    iName.Close();
	iName.Create( aPreset.iName );

	iLanguageCode.Close();
	iLanguageCode.Create( aPreset.iLanguageCode );

	iLanguage.Close();
	iLanguage.Create( aPreset.iLanguage );

	iCountryCode.Close();
	iCountryCode.Create( aPreset.iCountryCode );

	iCountry.Close();
	iCountry.Create( aPreset.iCountry );

	iLastModified.Close();
	iLastModified.Create( aPreset.iLastModified );

	iAdvertisementUrl.Close();
	iAdvertisementUrl.Create( aPreset.iAdvertisementUrl );

	iAdvertisementInUse.Close();
	iAdvertisementInUse.Create( aPreset.iAdvertisementInUse );

	iImgUrl.Close();
	iImgUrl.Create( aPreset.iImgUrl );

	iLogoData.Close();
	iLogoData.Create( aPreset.iLogoData );

	iDescription.Close();
	iDescription.Create( aPreset.iDescription );

	iShortDesc.Close();
	iShortDesc.Create( aPreset.iShortDesc );
	
	iMusicStoreStatus.Close();
	iMusicStoreStatus.Create( aPreset.iMusicStoreStatus );

	iGenereName.Close();
	iGenereName.Create( aPreset.iGenereName );

	iGenereId.Close();
	iGenereId.Create( aPreset.iGenereId );


	iUrlArray->ResetAndDestroy();
		
	for(TInt cnt=0;cnt<aPreset.iChannelUrlCount;cnt++)
		{
		ASSERT( cnt >= 0 && cnt < aPreset.iUrlArray->Count() );
		TRAPD( errUrl, SetUrlL( aPreset.iUrlArray->At( cnt )->GetServerName(), 
		    aPreset.iUrlArray->At( cnt )->GetServerUrl(), 
		    aPreset.iUrlArray->At( cnt )->GetBitRate()) )
		
		if ( errUrl != KErrNone )
			{
			return *this ;
			}
		}
	iChannelUrlCount=aPreset.iChannelUrlCount;
	iType=aPreset.iType;  //0 for user defined 1 for isds type.
	iPresetId = aPreset.iPresetId;
	IRLOG_DEBUG( "CIRIsdsPreset::operator= - Exiting." );
 	return *this;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetAvailableBitrates()
// Function to get available bitrates
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CIRIsdsPreset::GetAvailableBitrates( RArray<TInt>& aBitrates ) const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetAvailableBitrates - Entering." );
	aBitrates.Reset();
	TInt err = KErrNone;
	for ( TInt loop = 0; loop < iUrlArray->Count() && !err; ++loop )
		{
		err = aBitrates.InsertInOrder( iUrlArray->At( loop )->GetBitRate() );
		if ( err == KErrAlreadyExists )
		    {
		    // Do not allow duplicates, but strip them away.
		    err = KErrNone;
		    }
		}

    if ( err )
        {
        aBitrates.Reset();
        }
    
	IRLOG_DEBUG( "CIRIsdsPreset::GetAvailableBitrates - Exiting." );
	return err;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetUrlForBitrateL()
// Function to get Url for a given bitrate
// ---------------------------------------------------------------------------
//
EXPORT_C CDesCArrayFlat* CIRIsdsPreset::GetUrlForBitrateL( TInt aBitrate )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Entering." );
	CDesCArrayFlat* urlForBitrate = new( ELeave )CDesCArrayFlat( KUrlForBitrateMaxLength );
	CleanupStack::PushL( urlForBitrate );
	iBitrate = aBitrate;
	SortInOrderL();
	//appending the urls with bit rate less than or
	//equal to given bit rate limit
	for ( TInt loop = 0; loop < iUrlArray->Count(); ++loop )
		{
		if ( aBitrate >= iUrlArray->At( loop )->GetBitRate())
			{
			urlForBitrate->AppendL( iUrlArray->At( loop )->GetServerUrl() );
			}
		}
	
	//appending	the url	with bit rate greater than given
	//bit rate limit
	for ( TInt loop = ( iUrlArray->Count()-1 ); loop >= 0; --loop)
		{
		if ( aBitrate<iUrlArray->At( loop )->GetBitRate() )
			{
			urlForBitrate->AppendL( iUrlArray->At( loop )->GetServerUrl() );
			}
		}
	if ( urlForBitrate->MdcaCount()==0 && iUrlArray->Count() > 0 )
		{
		urlForBitrate->AppendL( iUrlArray->At( 0 )->GetServerUrl() );
		}

    CleanupStack::Pop( urlForBitrate );
	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Exiting." );
	return urlForBitrate;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetExactUrlForBitrateL()
// Function to get Urls exactly matching a given bitrate for display purpose
// ---------------------------------------------------------------------------
//
EXPORT_C CDesCArrayFlat* CIRIsdsPreset::GetExactUrlForBitrateL( TInt aBitrate )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Entering." );
	CDesCArrayFlat* urlForBitrate = 
	    new( ELeave )CDesCArrayFlat( KUrlForBitrateMaxLength );
	
	CleanupStack::PushL(urlForBitrate);

	SortInOrderL();
	//appending the urls with bit rate less than or
	//equal to given bit rate limit
	for ( TInt loop = 0; loop < iUrlArray->Count(); ++loop )
		{
		if ( aBitrate == iUrlArray->At( loop )->GetBitRate() )
			{
			urlForBitrate->AppendL( iUrlArray->At( loop )->GetServerUrl() );
			}
		}

    CleanupStack::Pop( urlForBitrate );
	IRLOG_DEBUG( "CIRIsdsPreset::GetUrlForBitrateL - Exiting." );
	return urlForBitrate;
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetChannelUrlAtL()
// Function to get channel Url for a given index
// ---------------------------------------------------------------------------
//
EXPORT_C const TDesC& CIRIsdsPreset::GetChannelUrlAtL( TInt aIndex ) const
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Entering." );
	__ASSERT_ALWAYS( aIndex < iUrlArray->Count(), User::Leave( KErrArgument ) );
	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Exiting." );
	return iUrlArray->At( aIndex )->GetServerUrl();
	}


// ---------------------------------------------------------------------------
// CIRIsdsPreset::GetChannelBitrateL()
// Function to get channel Url for a given index
// ---------------------------------------------------------------------------
//
EXPORT_C TInt CIRIsdsPreset::GetChannelBitrateL( TInt aIndex )
	{
	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Entering." );
	__ASSERT_ALWAYS( aIndex < iUrlArray->Count(), User::Leave( KErrArgument ) );
	CDesCArrayFlat* urlForBitrate = 
	    new( ELeave )CDesCArrayFlat( KUrlForBitrateMaxLength );
	
	CleanupStack::PushL( urlForBitrate );
	SortInOrderL();
	//appending the urls with bit rate less than or
	//equal to given bit rate limit
	for ( TInt loop = 0; loop < iUrlArray->Count(); ++loop )
		{
		if ( iBitrate >= iUrlArray->At( loop )->GetBitRate())
			{
			urlForBitrate->AppendL( iUrlArray->At( loop )->GetServerUrl() );
			}
		}
	
	//appending	the url	with bit rate greater than given
	//bit rate limit
	for ( TInt loop = ( iUrlArray->Count() - 1 );loop >= 0; --loop )
		{
		if ( iBitrate<iUrlArray->At( loop )->GetBitRate() )
			{
			urlForBitrate->AppendL( iUrlArray->At( loop )->GetServerUrl() );
			}
		}
	
	if ( urlForBitrate->MdcaCount() == 0 && iUrlArray->Count() > 0 )
		{
		urlForBitrate->AppendL( iUrlArray->At( 0 )->GetServerUrl() );
		}
	
    for ( TInt i = 0; i < iUrlArray->Count(); ++i )
	    {
	    if ( iUrlArray->At( i )->GetServerUrl().Compare
	            ( urlForBitrate->MdcaPoint( aIndex ) ) == 0 )
		    {
		    IRRDEBUG2( "CIRIsdsPreset:: - GetChannelBitrateL", KNullDesC );
		    CleanupStack::Pop( urlForBitrate );
			return iUrlArray->At( i )->GetBitRate();
		    }
	    }
    
    CleanupStack::Pop( urlForBitrate );
	IRRDEBUG2( "CIRIsdsPreset:: - GetChannelUrlAtL Exiting", KNullDesC );
	IRLOG_DEBUG( "CIRIsdsPreset::GetChannelUrlAtL - Exiting." );
	return 0;
	}


//----------------------------------------------------------------------------
// CIRIsdsPreset::SortInOrderL()
// simple bubble shot
// to sort the  bitrates in desc order
//----------------------------------------------------------------------------
//
void CIRIsdsPreset::SortInOrderL()
	{
	IRLOG_DEBUG( "CIRIsdsPreset::SortInOrderL - Exiting." );
	//temporary holder for pointer
	CIRChannelServerUrl* holdTemp = NULL;
	TInt urlcount = iUrlArray->Count();
	//sorts the array pointers [of urls] in the descending order of bit rate
	//bubble sort algorithm is used for this
	for ( TInt sortcount = ( urlcount - 1 ); sortcount >= 0; --sortcount )
	  	{
	    for ( TInt index = 1; index <= sortcount; index++ )
	    	{
	      	if ( iUrlArray->At( index - 1 )->GetBitRate() < 
	      			iUrlArray->At( index )->GetBitRate())
		       {
		       holdTemp = iUrlArray->At( index-1 );
		       iUrlArray->At( index - 1 ) = iUrlArray->At( index );
		       iUrlArray->At( index ) = holdTemp;
		       }
	    	}
	  	}
	
	IRLOG_DEBUG( "CIRIsdsPreset::SortInOrderL - Exiting." );
	return;
	}