internetradio2.0/presetplugininc/irpresetimpl.h
changeset 0 09774dfdd46b
child 8 3b03c28289e6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/presetplugininc/irpresetimpl.h	Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,567 @@
+/*
+* 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