internetradio2.0/ircommon/inc/irisdspreset.h
changeset 14 896e9dbc5f19
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/ircommon/inc/irisdspreset.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,532 @@
+/*
+* 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.
+ *
+ */
+
+#ifndef IRISDSPRESET_H
+#define IRISDSPRESET_H
+
+#include <badesca.h>
+
+class CIRChannelServerUrl;
+class RReadStream;
+class RWriteStream;
+
+/**
+ * This class provides the basic structure to hold the preset
+ * information that come from the isds server.
+ * 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
+ * CIRIsdsPreset* preset = CIRIsdsPreset::NewL()
+ * preset->SetXXX();
+ * preset->GetXXX()
+ * *preset1 = *preset2
+ * @endcode
+ *
+ */
+class CIRIsdsPreset:public CBase
+    {
+
+    public:
+
+    /**
+     * CIRIsdsPreset::NewL()
+     * Static function
+     * standard two phased constructor
+     * @return *CIRIsdsPreset
+     */
+    IMPORT_C static CIRIsdsPreset* NewL();
+
+    /**
+     * CIRIsdsPreset::NewLC()
+     * Static function
+     * standard two phased constructor
+     * @return *CIRIsdsPreset
+     */
+    IMPORT_C static CIRIsdsPreset* NewLC();
+
+    /**
+     * CIRIsdsPreset::~CIRIsdsPreset()
+     * standard C++ destructor
+     */
+    ~CIRIsdsPreset();
+
+	protected:
+    /**
+    *CIRIsdsPreset::CIRIsdsPreset()
+    *standard C++ constructor
+    */
+	CIRIsdsPreset();
+	
+	/**
+	*CIRIsdsPreset::ConstructL()
+	*standard second phase constructor(Leaveable)
+	*/
+	void ConstructL();
+
+    public:
+
+    /**
+     * CIRIsdsPreset::SetId()
+     * sets id
+     * @param TDesC,supplied by xml parser
+     */
+    IMPORT_C void SetId( const TDesC& aId );
+
+    /**
+     * CIRIsdsPreset::SetId()
+     * sets id
+     * @param TInt,provided to manipulate the id number
+     */
+    IMPORT_C void SetId( TInt aId );
+
+    /**
+     * CIRIsdsPreset::SetNameL()
+     * sets the preset name
+     * @param TdesC aname,the name to be set
+     */
+    IMPORT_C void SetNameL( const TDesC& aName );
+
+    /**
+     * CIRIsdsPreset::SetLangInfoL()
+     * sets the preset language name and the code
+     * @param TdesC,TdesC language id and name to be set
+     */
+    IMPORT_C void SetLangInfoL( const TDesC &aLangId,const TDesC& aLangName );
+
+    /**
+     * CIRIsdsPreset::SetCountryInfoL()
+     * sets the preset country name and the code
+     * @param TdesC,TdesC country id and country name to be set
+     */
+    IMPORT_C void SetCountryInfoL( const TDesC& aCountryId,
+        const TDesC& aCountryName );
+
+    /**
+     * CIRIsdsPreset::SetLangCodeL()
+     * sets the language code
+     * @param TdesC language code
+     */
+    IMPORT_C void SetLangCodeL( const TDesC &aLangId );
+
+    /**
+     * CIRIsdsPreset::SetLangL()
+     * sets the language
+     * @param TdesC language
+     */
+    IMPORT_C void SetLangL( const TDesC& aLangName );
+
+    /**
+     * CIRIsdsPreset::SetCountryCodeL()
+     * sets the language code
+     * @param TdesC language code
+     */
+    IMPORT_C void SetCountryCodeL( const TDesC &aCountryId );
+
+    /**
+     * CIRIsdsPreset::SetCountryNameL()
+     * sets the language name
+     * @param TdesC language name
+     */
+    IMPORT_C void SetCountryNameL( const TDesC& aCountryName );
+
+    /**
+     * CIRIsdsPreset::SetLastModifiedTimeL()
+     * sets the lastmodified time stamp
+     * @param TdesC lastmodified time stamp
+     */
+    IMPORT_C void SetLastModifiedTimeL( const TDesC &aLastModified );
+
+    /**
+     * CIRIsdsPreset::SetGenreInfoL()
+     * sets the genreid and name
+     * @param aGenreId
+     * @param aGenreName
+     */
+    IMPORT_C void SetGenreInfoL( const TDesC& aGenreId,const TDesC& aGenreName );
+
+    /**
+     * CIRIsdsPreset::SetImgUrlL()
+     * sets the image url
+     * @param aImgUrl
+     */
+    IMPORT_C void SetImgUrlL( const TDesC& aImgUrl );
+
+    /**
+     * CIRIsdsPreset::SetLogoDataL()
+     * sets the Logo Data
+     * @param aData
+     * @param aSize
+     */
+    IMPORT_C void SetLogoDataL( const TDesC8& aData );
+
+    /**
+     *CIRIsdsPreset::SetAdvertisementInUseL()
+     *sets the advertisementinuse url
+     *@param aAdvertisementInUse
+     */
+    IMPORT_C void SetAdvertisementInUseL( const TDesC& aAdvertisementInUse );
+
+    /**
+     * CIRIsdsPreset::SetDescriptionL()
+     * sets the description for the channel
+     * @param aDescription
+     */
+    IMPORT_C void SetDescriptionL( const TDesC& aDescription );
+
+    /**
+     * CIRIsdsPreset::SetAdvertisementUrlL()
+     * sets the advertisement url
+     * @param aAdvertisementUrl
+     */
+    IMPORT_C void SetAdvertisementUrlL( const TDesC& aAdvertisementUrl );
+
+    /**
+     * CIRIsdsPreset::SetUrlCount()
+     * sets the count of the number of urls
+     */
+    IMPORT_C void SetUrlCount();
+
+    /**
+     * CIRIsdsPreset::SetShortDescL()
+     * sets the short description
+     * @param aShortDesc
+     */
+    IMPORT_C void SetShortDescL( const TDesC& aShortDesc );
+
+    /**
+     * Sets the genre name
+     * @param aGenreName
+     */
+    IMPORT_C void SetGenreNameL( const TDesC& aGenreName );
+
+    /**
+     * Sets the genre id
+     * @param aGenreId
+     */
+    IMPORT_C void SetGenreIdL( const TDesC& aGenreId );
+
+    /**
+     *CIRIsdsPreset::SetUrlCount()
+     *sets the count of the number of urls
+     *@param aCnt ,count
+     */
+    IMPORT_C void SetUrlCount( TInt aCnt );
+
+	/**
+	*CIRIsdsPreset::SetUrlL()
+	*sets the channel server url
+	*@param aServerName ,server name
+	*@param aUrl ,server url
+	*@param aBitrate .server bitrate
+	*/
+	IMPORT_C void SetUrlL(const TDesC &aServerName,const TDesC &aUrl,const TDesC &aBitrate);
+
+    /**
+     * CIRIsdsPreset::SetUrlL()
+     * sets the channel server url
+     * @param aServerName ,server name
+     * @param aUrl ,server url
+     * @param aBitrate ,server bitrate
+     */
+    IMPORT_C void SetUrlL( const TDesC& aServerName, const TDesC& aUrl, TInt aBitrate );
+
+	/**
+	*CIRIsdsPreset::SetChannelType()
+	*sets the channel type
+	*@param aChannelType userdefined,isds,adhoc
+	*/
+	IMPORT_C	void SetChannelType(TInt aChannelType);
+	
+	
+	/**
+	*CIRIsdsPreset::SetMusicStoreStatusL()
+	*sets the musicStoreEnabled 
+	*@param aMusicStoreStatus
+	*/
+	IMPORT_C    void SetMusicStoreStatusL(const TDesC& aMusicStoreStatus);
+	
+	
+	
+	
+
+	//for serialization
+	/**
+	*CIRIsdsPreset::ExternalizeL()
+	*serializes the preset data into a stream
+	*@param aWriteStream
+	*/
+	IMPORT_C	void ExternalizeL(RWriteStream& aWriteStream);
+
+    /**
+     * CIRIsdsPreset::InternalizeL()
+     * serializes the preset data from a stream to a structure
+     * @param aReadStream
+     */
+    IMPORT_C void InternalizeL( RReadStream& aReadStream );
+
+    /**
+     * CIRIsdsPreset::GetId()
+     * gets the channel id
+     * @return TInt
+     */
+    IMPORT_C TInt GetId() const;
+
+    /**
+     * CIRIsdsPreset::GetName()
+     * gets the channel name
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetName() const;
+
+    /**
+     * CIRIsdsPreset::GetLangId()
+     * gets the channel channelid
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetLangId() const;
+
+    /**
+     * CIRIsdsPreset::GetLangName()
+     * gets the channel language name
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetLangName() const;
+
+    /**
+     * CIRIsdsPreset::GetCountryId()
+     * gets the channel countryid
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetCountryId() const;
+
+    /**
+     * CIRIsdsPreset::GetCountryName()
+     * gets the channel country name
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetCountryName() const;
+
+    /**
+     * CIRIsdsPreset::GetLastModifiedTime()
+     * gets the channel last modified time stamp
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetLastModifiedTime() const;
+
+    /**
+     * CIRIsdsPreset::GetDescription()
+     * gets the channel description
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetDescription() const;
+
+    /**
+     * CIRIsdsPreset::GetShortDescription()
+     * gets the channel  short description
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetShortDescription() const;
+
+    /**
+     * CIRIsdsPreset::GetChannelType()
+     * gets the channel  Type
+     * @return TInt
+     */
+    IMPORT_C TInt GetChannelType() const;
+
+	/**
+	*CIRIsdsPreset::GetGenreId()
+	*gets the channel  genreid
+	*@return TDesC
+	*/
+	IMPORT_C	const TDesC& GetGenreId() const;
+
+    /**
+     * CIRIsdsPreset::GetGenreName()
+     * gets the channel  genre name
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetGenreName() const;
+
+    /**
+     * CIRIsdsPreset::GetAdvertisementUrl()
+     * gets the channel  advertisement url
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetAdvertisementUrl() const;
+
+    /**
+     * Gets the channel advertisement in use
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetAdvertisementInUse() const;
+
+    /**
+     * Gets the image url
+     * @return TDesC
+     */
+    IMPORT_C const TDesC& GetImgUrl() const;
+
+    /**
+     * CIRIsdsPreset::GetUrlCount()
+     * gets the channel  url count
+     * @return TDesC
+     */
+    IMPORT_C TInt GetUrlCount() const;
+
+    /**
+     * CIRIsdsPreset::GetLogoData()
+     * gets the Logo Data
+     * @return TDesC&
+     */
+    IMPORT_C const TDesC8& GetLogoData() const;
+
+		/**
+	*CIRIsdsPreset::GetMusicStoreStatus()
+	*gets the musicStoreEnabled 
+	*@return TDesC&
+	*/
+	IMPORT_C    const TDesC& GetMusicStoreStatus() const;
+
+    /**
+     * CIRIsdsPreset::SetLastModifiedTime()
+     * gets the channel  url at a particular index
+     * @param aindex
+     * @return CIRChannelServerUrl
+     */
+    IMPORT_C CIRChannelServerUrl& GetUrl( TInt aInt );
+
+    /**
+     * CIRIsdsPreset::operator=()
+     * assignment operator
+     * @param CIRIsdsPreset& aPreset
+     * @return CIRIsdsPreset
+     */
+    IMPORT_C CIRIsdsPreset& operator=(const CIRIsdsPreset& aPreset);
+
+    /**
+     * CIRIsdsPreset::GetAvailableBitrates()
+     * gets the bitrate array
+     * @return RArray<TInt>
+     */
+    IMPORT_C TInt GetAvailableBitrates( RArray<TInt>& aBitrates ) const;
+
+    /**
+     * CIRIsdsPreset::GetUrlForBitrateL()
+     * gets the array of bitrates for a particular bitrate
+     * @param aBitrate
+     * @return CDesCArrayFlat
+     */
+    IMPORT_C CDesCArrayFlat* GetUrlForBitrateL( TInt aBitrate );
+
+    /**
+     * CIRIsdsPreset::GetExactUrlForBitrateL()
+     * Urls exactly matching a given bitrate for display purpose
+     * @param aBitrate
+     * @return CDesCArrayFlat
+     */
+    IMPORT_C CDesCArrayFlat* GetExactUrlForBitrateL( TInt aBitrate );
+
+    /**
+	*CIRIsdsPreset::GetChannelUrlAtL()
+	*sets the lastmodified time stamp
+	*returns the url at the urlarray by index
+	*@param aIndex
+	*@return TDesC
+	*/
+	IMPORT_C const TDesC& GetChannelUrlAtL(TInt aIndex) const;
+    /**
+     * CIRIsdsPreset::GetChannelUrlAtL()
+     * sets the lastmodified time stamp
+     * returns the url at the urlarray by index
+     * @param aIndex
+     * @return TDesC
+     */
+    IMPORT_C  TInt GetChannelBitrateL( TInt aIndex );
+
+private:
+
+    /**
+     * CIRIsdsPreset::SortInOrderL()
+     * sorts the urls in bitrate order desc.
+     */
+    void SortInOrderL();
+
+public:
+
+    //url array
+    CArrayPtrFlat<CIRChannelServerUrl>* iUrlArray;
+
+    /**
+     * type of presets(source)
+     */
+    enum TChannelType
+        {
+        EUserDefined, // added by user
+        EIsdsPreset, // fetched from isds
+        EAdhoc // not in use currently
+        };
+
+private:
+	//no of channel urls
+	TInt iChannelUrlCount;
+    //0 for user defined 1 for isds type.
+	TInt iType;
+	//isds generated preset id
+	TInt iPresetId;
+	//preset name
+	RBuf iName;
+	//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;
+	//musicStoreEnabled value
+	RBuf iMusicStoreStatus;
+	//not in use
+	RBuf iAdvertisementUrl;
+	//not in use
+	RBuf iAdvertisementInUse;
+	//not in use
+	RBuf iImgUrl;
+	//Logo Data
+	RBuf8 iLogoData;
+	//channel description
+	RBuf iDescription;
+	//channel short desription
+	RBuf iShortDesc;
+	//channel genre name
+	RBuf iGenereName;
+	//channel genre id
+	RBuf iGenereId;
+	//channel bitrate
+	TInt iBitrate;
+
+	};
+
+#endif    //IRISDSPRESET_H
+