internetradio2.0/presetplugininc/irpresetimpl.h
author Pat Downey <patd@symbian.org>
Tue, 18 May 2010 11:36:57 +0100
changeset 4 3f2d53f144fe
parent 0 09774dfdd46b
child 8 3b03c28289e6
permissions -rw-r--r--
Merge docml changeset with recent Nokia delivery.

/*
* 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:  ?Description
*
*/


#ifndef IRPRESETIMPL_H
#define IRPRESETIMPL_H

#include "irpreset.h"

class CIRChannelServerUrlImpl;

/**
 * This class provides the basic structure to hold the preset
 *information that is saved in the favourites database
 *It also provides the basic getter and setter functions to
 *manage the preset information.
 *for url selection for a particular bitrate some functionality
 *has been provided
 *copy constructor and assignment operator has been provided to
 *override the default ones
 *
 * @code
 *CIRPresetImpl* preset = CIRPresetImpl::NewL()
 *preset->SetXXX();
 *preset->GetXXX()
 * *preset1 = *preset2
 * @endcode
 *
 */

class CIRPresetImpl:public CIRPreset
	{

public:

	/**CIRPresetImpl::NewL()
	*Static function
	*standard two phased constructor
	*@param void
	*@return *CIRPresetImpl
	**/
    static CIRPresetImpl* NewL(TAny* aParams);


	/**CIRPresetImpl::NewLC()
	*Static function
	*standard two phased constructor
	*@param void
	*@return *CIRPresetImpl
	**/
 	static CIRPresetImpl* NewLC(TAny* aParams);


	/**CIRPresetImpl::~CIRIsdsPreset()
	*standard C++ destructor
	*@param NA
	*@return NA
	**/
	~CIRPresetImpl();

	/**
	*CIRPresetImpl::SetId()
	*sets id
	*@param TDesC,supplied by xml parser
	*/
	void SetId(const TDesC &aId);

	/**
	*CIRPresetImpl::SetId()
	*sets id
	*@param TInt,provided to manipulate the id number
	*/
	void SetId(TInt aId);


	/**
	*CIRPresetImpl::SetLangInfo()
	*sets the preset language name and the code
	*@param TdesC,TdesC language id and name to be set
	*/
	void SetLangInfo(const TDesC &aLangId,const TDesC& aLangName);

	/**
	*CIRPresetImpl::SetCountryInfo()
	*sets the preset country name and the code
	*@param TdesC,TdesC country id and country name to be set
	*/
	void SetCountryInfo(const TDesC &aCountryId,const TDesC& aCountryName);

	/**
	*CIRPresetImpl::SetLangCode()
	*sets the language code
	*@param TdesC language code
	*/
	void SetLangCode(const TDesC &aLangId);

	/**
	*CIRPresetImpl::SetLang()
	*sets the language
	*@param TdesC language
	*/
	void SetLang(const TDesC& aLangName);

	/**
	*CIRPresetImpl::SetCountryCode()
	*sets the language code
	*@param TdesC language code
	*/
	void SetCountryCode(const TDesC &aCountryId);

	/**
	*CIRPresetImpl::SetCountryName()
	*sets the language name
	*@param TdesC language name
	*/
	void SetCountryName(const TDesC& aCountryName);

	/**
	*CIRPresetImpl::SetLastModifiedTime()
	*gets the channel  url at a particular index
	*@param TDesC,time stamp
	*/
	void SetLastModifiedTime(const TDesC &aLastModified);

	/**
	*CIRPresetImpl::SetGenreInfo()
	*sets the genreid and name
	*@param aGenreId
	*@param aGenreName
	*/
	void SetGenreInfo(const TDesC& aGenreId,const TDesC& aGenreName);

	/**
	*CIRPresetImpl::SetImgUrl()
	*sets the image url
	*@param aImgUrl
	*/
	void SetImgUrl(const TDesC& aImgUrl);

	/**
	*CIRPresetImpl::SetLogoData()
	*sets the Logo Data
	*@param aData
	*@param aSize
	*/
	void SetLogoData( const TDesC8& aData );

	/**
	*CIRPresetImpl::SetAdvertisementInUse()
	*sets the advertisementinuse url
	*@param aAdvertisementInUse
	*/
	void SetAdvertisementInUse(const TDesC& aAdvertisementInUse);

	/**
	*CIRPresetImpl::SetDescription()
	*sets the description for the channel
	*@param aDescription
	*/
	void SetDescription(const TDesC& aDescription);

	/**
	*CIRPresetImpl::SetAdvertisementUrl()
	*sets the advertisement url
	*@param aAdvertisementUrl
	*/
	void SetAdvertisementUrl(const TDesC& aAdvertisementUrl);

	/**
	*CIRPresetImpl::SetUrlCount()
	*sets the count of the number of urls
	*/
	void SetUrlCount();

	/**
	*CIRPresetImpl::SetShortDesc()
	*sets the short description
	*@param aShortDesc
	*/
	void SetShortDesc(const TDesC& aShortDesc);

	/**
	*CIRPresetImpl::SetUrlCount()
	*sets the count of the number of urls
	*@param aCnt ,count
	*/
	void SetUrlCount(TInt aCnt);

	/**
	*CIRPresetImpl::SetUrlL()
	*sets the channel server url
	*@param aServerName ,server name
	*@param aUrl ,server url
	*@param aBitrate .server bitrate
	*/
	void SetUrlL(const TDesC &aServerName,const TDesC &aUrl,
		const TDesC &aBitrate);

	/**
	*CIRPresetImpl::SetUrlL()
	*sets the channel server url
	*@param aServerName ,server name
	*@param aUrl ,server url
	*@param aBitrate ,server bitrate
	*/
	void SetUrlL(const TDesC &aServerName,const TDesC &aUrl,TInt aBitrate);

	/**
	*CIRPresetImpl::SetChannelType()
	*sets the channel type
	*@param aChannelType userdefined,isds,adhoc
	*/
	void SetChannelType(TInt aChannelType);
	
	/**
	*CIRPresetImpl::SetMusicStoreStatus()
	*sets the musicStoreEnabled 
	*@param aMusicStoreStatus
	*/
	void SetMusicStoreStatus(const TDesC& aMusicStoreStatus);

	//getter functions

	/**
	*CIRPresetImpl::GetId()
	*gets the channel id
	*@return TInt
	*/
	TInt GetId()const;
	/**
	*CIRPresetImpl::GetLangId()
	*gets the channel channelangid
	*@return TDesC
	*/
	const TDesC& GetLangId() const;

	/**
	*CIRPresetImpl::GetLangName()
	*gets the channel language name
	*@return TDesC
	*/
	const TDesC& GetLangName() const;

	/**
	*CIRPresetImpl::GetCountryId()
	*gets the channel countryid
	*@return TDesC
	*/
	const TDesC& GetCountryId() const;

	/**
	*CIRPresetImpl::GetCountryName()
	*gets the channel country name
	*@return TDesC
	*/
	const TDesC& GetCountryName() const;

	/**
	*CIRPresetImpl::GetLastModifiedTime()
	*gets the channel last modified time stamp
	*@return TDesC
	*/
	const TDesC& GetLastModifiedTime() const;

	/**
	*CIRPresetImpl::GetDescription()
	*gets the channel description
	*@return TDesC
	*/
	const TDesC& GetDescription() const;

	/**
	*CIRPresetImpl::GetShortDescription()
	*gets the channel  short description
	*@return TDesC
	*/
	const TDesC& GetShortDescription() const;

    /**
    *CIRPresetImpl::GetChannelType()
	*gets the channel  Type
	*@return TInt
	*/
	TInt GetChannelType()const;

	/**
	*CIRPresetImpl::GetGenreId()
	*gets the channel  genreid
	*@return TDesC
	*/
	const TDesC& GetGenreId() const;

	/**
	*CIRPresetImpl::GetGenreName()
	*gets the channel  genre name
	*@return TDesC
	*/
	const TDesC& GetGenreName() const;

	/**
	*CIRPresetImpl::GetAdvertisementUrl()
	*gets the channel  advertisement url
	*@return TDesC
	*/
	const TDesC& GetAdvertisementUrl() const;

	/**
	*CIRPresetImpl::GetImgUrl()
	*gets the channel  image url
	*@return TDesC
	*/
	const TDesC& GetImgUrl() const;

    /**
    *CIRPresetImpl::GetUrlCount()
	*gets the channel  url count
	*@return TDesC
	*/
	TInt GetUrlCount()const;

	/*
	*CIRPresetImpl::GetLogoData()
	*gets the Logo Data
	*@return TDesC8&
	*/
    const TDesC8& GetLogoData() const;

	/**
	*CIRPresetImpl::GetUrl()
	*gets the channel  url from zeroth position
	*@return CIRChannelServerUrlImpl&
	*/
	CIRChannelServerUrlImpl& GetUrl(TInt aInt)const;
	
	/*
	 * get the channel url at specified position
     *
     */
	const TDesC& GetChannelUrlAt(TInt aIndex) const;
	    
	/**
	*CIRPresetImpl::GetMusicStoreStatus()
	*gets the musicStoreEnabled 
	*@return TDesC&
	*/
	const TDesC& GetMusicStoreStatus()const;


    /**
    *CIRPresetImpl::operator=()
	*assignment operator
	*@param CIRIsdsPreset& aPreset
	*@return CIRIsdsPreset
	*/
	CIRPresetImpl& operator=(const CIRPresetImpl& aPreset);

	/**
 	*void CIRPresetImpl::CIRIsdsPresetToCIRPresetImpl(const CIRIsdsPreset& aIsdsPreset)
 	*used to convert the isdspresets to plugnized presets.
 	*Does a deep copy for all the member variables
 	*@param CIRIsdsPreset&,the preset to be copied from
	*/
	void CIRIsdsPresetToCIRPresetImpl(const CIRIsdsPreset& aIsdsPreset);

	/**
	*CIRPresetImpl::CopyPresetData()
	*copy data to CIRIsdsPreset
	*@param CIRIsdsPreset&,the preset to be copied into
	*/
	void CopyPresetData(CIRIsdsPreset& aIsdsPreset) const;

	/**
	*CIRPresetImpl::GetAvailableBitrates()
	*gets the bitrate array
	*@return RArray<TInt>
	*/
	RArray<TInt>& GetAvailableBitrates();

    /**
	*CIRPresetImpl::UniqId()
	*gets the unique id
	*@return TUint32
	*/
	TUint32 UniqId() ;

	/**
	*CIRPresetImpl::SetUniqId()
	*sets the unique id for the preset
	*@param aId
	*/
	void SetUniqId( TUint32 aUniqId);

    /*
     * Returns the played times of the channel
     */
    TInt GetPlayedTimes() const;
    
    /*
     * Set the played times of the channel
     */
    void SetPlayedTimes(TInt aPlayedTimes);
    
protected:

    /**CIRPresetImpl::CIRIsdsPreset()
    *standard C++ constructor
    *@param void
    *@return NA
    **/
    CIRPresetImpl();
    
	/**CIRPresetImpl::ConstructL(TAny* aParams)
	*standard second phase constructor(Leaveable)
	*@param void
	*@return void
	**/
	void ConstructL(TAny* aParams);


    //for serialization
    /**
    *CIRPresetImpl::ExternalizeL()
    *serializes the preset data into a stream
    *@param aWriteStream
    */
    void ExternalizeL(RWriteStream& aWriteStream)const;

    /**
    *CIRPresetImpl::InternalizeL()
    *serializes the preset data from a stream to a structure
    *@param aReadStream
    */
    void InternalizeL(RReadStream& aReadStream);
    
private:

	/**
	 * unique id generated for the preset saved at favourite
	 */
	TUint32 iUniqId;

	/**
	 * no of channel urls
	 */
	TInt iChannelUrlCount;

	/**
	 * 0 for user defined 1 for isds type.
	 */
	TInt iType;

	/**
	 * index in the preset table
	 */
	//TInt iIndex;not required

	/**
	 * isds generated preset id
	 */
	TInt iPresetId;

	/**
	 * preset language code
	 */
	RBuf iLanguageCode;

	/**
	 * preset language
	 */
	RBuf iLanguage;

	/**
	 * preset country of origin code
	 */
	RBuf iCountryCode;

	/**
	 * preset country of origin
	 */
	RBuf iCountry;

	/**
	 * preset last modified
	 */
	RBuf iLastModified;

	/**
	 * not in use
	 */
	RBuf iAdvertisementUrl;

	/**
	 * not in use
	 */
	RBuf iAdvertisementInUse;

	/**
	 * Logo URL
	 */
	RBuf iImgUrl;

	/**
     * Raw image data for the logo.
     * Owned.
     */
    RBuf8 iLogoData;

	/**
	 * channel description
	 */
	RBuf iDescription;

	/**
	 * channel short desription
	 */
	RBuf iShortDesc;

	/**
	 * channel genre name
	 */
	RBuf iGenereName;

	/**
	 * channel genre id
	 */
	RBuf iGenereId;
	
	/**
	 * musicStoreEnabled value
	 */
	RBuf iMusicStoreStatus;


	/**
	 * url array
	 */
	CDesCArrayFlat* iUrlForBitrate;

	/**
	 * url array
	 */
	CArrayPtrFlat<CIRChannelServerUrlImpl>* iUrlArray;

	/**
	 * bitrate array
	 */
	RArray<TInt> iBitrateArray;
	
	//added by Peter on June 23rd, 2009
	TInt iPlayedTimes;
	};

#endif	//end of IRPRESETIMPL_H