internetradio2.0/irpresetplugin/inc/irpresetimpl.h
changeset 14 896e9dbc5f19
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/irpresetplugin/inc/irpresetimpl.h	Wed Aug 18 09:40:26 2010 +0300
@@ -0,0 +1,557 @@
+/*
+* Copyright (c) 2007 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:
+*
+*/
+
+
+#ifndef C_IRPRESETIMPL_H
+#define C_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::SetLangInfoL()
+     * sets the preset language name and the code
+     * @param TdesC,TdesC language id and name to be set
+     */
+    void SetLangInfoL( const TDesC &aLangId,
+                      const TDesC& aLangName );
+
+    /**
+     * CIRPresetImpl::SetCountryInfoL()
+     * sets the preset country name and the code
+     * @param TdesC,TdesC country id and country name to be set
+     */
+    void SetCountryInfoL( const TDesC &aCountryId,
+                         const TDesC& aCountryName );
+
+    /**
+     * CIRPresetImpl::SetLangCodeL()
+     * sets the language code
+     * @param TdesC language code
+     */
+    void SetLangCodeL( const TDesC &aLangId );
+
+    /**
+     * CIRPresetImpl::SetLangL()
+     * sets the language
+     * @param TdesC language
+     */
+    void SetLangL( const TDesC& aLangName );
+
+    /**
+     * CIRPresetImpl::SetCountryCodeL()
+     * sets the language code
+     * @param TdesC language code
+     */
+    void SetCountryCodeL( const TDesC &aCountryId );
+
+    /**
+     * CIRPresetImpl::SetCountryNameL()
+     * sets the language name
+     * @param TdesC language name
+     */
+    void SetCountryNameL( const TDesC& aCountryName );
+
+    /**
+     * CIRPresetImpl::SetLastModifiedTimeL()
+     * gets the channel  url at a particular index
+     * @param TDesC,time stamp
+     */
+    void SetLastModifiedTimeL( const TDesC &aLastModified );
+
+    /**
+     * CIRPresetImpl::SetGenreInfoL()
+     * sets the genreid and name
+     * @param aGenreId
+     * @param aGenreName
+     */
+    void SetGenreInfoL( const TDesC& aGenreId,
+                       const TDesC& aGenreName );
+
+    /**
+     * CIRPresetImpl::SetImgUrlL()
+     * sets the image url
+     * @param aImgUrl
+     */
+    void SetImgUrlL( const TDesC& aImgUrl );
+
+    /**
+     * CIRPresetImpl::SetLogoDataL()
+     * sets the Logo Data
+     * @param aData
+     * @param aSize
+     */
+    void SetLogoDataL( const TDesC8& aData );
+
+    /**
+     * CIRPresetImpl::SetAdvertisementInUseL()
+     * sets the advertisementinuse url
+     * @param aAdvertisementInUse
+     */
+    void SetAdvertisementInUseL( const TDesC& aAdvertisementInUse );
+
+    /**
+     * CIRPresetImpl::SetDescriptionL()
+     * sets the description for the channel
+     * @param aDescription
+     */
+    void SetDescriptionL( const TDesC& aDescription );
+
+    /**
+     * CIRPresetImpl::SetAdvertisementUrlL()
+     * sets the advertisement url
+     * @param aAdvertisementUrl
+     */
+    void SetAdvertisementUrlL( const TDesC& aAdvertisementUrl );
+
+    /**
+     * CIRPresetImpl::SetUrlCount()
+     * sets the count of the number of urls
+     */
+    void SetUrlCount();
+
+    /**
+     * CIRPresetImpl::SetShortDescL()
+     * sets the short description
+     * @param aShortDesc
+     */
+    void SetShortDescL( 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::SetMusicStoreStatusL()
+     * sets the musicStoreEnabled 
+     * @param aMusicStoreStatus
+     */
+    void SetMusicStoreStatusL( 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;
+
+	const TDesC& GetAdvertisementInUse() 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;
+
+	CIRChannelServerUrl& GetUrl(TInt aIndex) const;
+	/*
+	*CIRPresetImpl::GetLogoData()
+	*gets the Logo Data
+	*@return TDesC8&
+	*/
+    const TDesC8& GetLogoData() 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 );
+
+    /**
+     * CIRPresetImpl::CIRIsdsPresetToCIRPresetImplL()
+     * 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 CIRIsdsPresetToCIRPresetImplL( const CIRIsdsPreset& aIsdsPreset );
+
+    /**
+     * CIRPresetImpl::CopyPresetDataL()
+     * copy data to CIRIsdsPreset
+     * @param CIRIsdsPreset&,the preset to be copied into
+     */
+    void CopyPresetDataL( CIRIsdsPreset& aIsdsPreset ) const;
+
+    /**
+     * CIRPresetImpl::GetAvailableBitrates()
+     * gets the bitrate array
+     * @return RArray<TInt>
+     */
+    RArray<TInt>& GetAvailableBitrates();
+
+    /*
+     * Returns the played times of the channel
+     */
+    TInt GetPlayedTimes() const;
+
+    /**
+     * CIRPresetImpl::SetPlayedTimes() 
+     * Set the played times of the channel
+     */
+    void SetPlayedTimes( TInt aPlayedTimes );
+    
+    /*
+     * Get Rename status
+     */
+    TBool GetRenamed() const;
+    
+    /*
+     * Set Rename status
+     */
+    void SetRenamed();
+    
+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:
+
+	/**
+	 * no of channel urls
+	 */
+	TInt iChannelUrlCount;
+
+	/**
+	 * 0 for user defined 1 for isds type.
+	 */
+	TInt iType;
+
+	/**
+	 * 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
+	 */
+	CArrayPtrFlat<CIRChannelServerUrl>* iUrlArray;
+
+    /**
+     * bitrate array
+     */
+    RArray<TInt> iBitrateArray;
+    
+    /**
+     * iPlayedTimes
+     */    
+    TInt iPlayedTimes;   
+    
+    /**
+     *if the station is renamed after it's added into favorites
+     */
+    TBool iRenamed;
+    
+    };
+
+#endif // C_IRPRESETIMPL_H