internetradio2.0/favoritesdbinc/irfavoritesdb.h
changeset 0 09774dfdd46b
child 3 ee64f059b8e1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/internetradio2.0/favoritesdbinc/irfavoritesdb.h	Mon Apr 19 14:01:53 2010 +0300
@@ -0,0 +1,301 @@
+/*
+* Copyright (c) 2006-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:  ?Description
+*
+*/
+
+
+#ifndef  IRFAVORITESDB_H
+#define  IRFAVORITESDB_H
+
+#include <pspresetobserver.h>
+#include <psserv.h>
+
+class CIRIsdsPreset;
+class CIRPreset;
+class CIRSettings;
+class CPSPresetNotifier;
+
+
+//typedefed to array of pointer array
+typedef RPointerArray<CIRPreset> RIRPresetArray;
+
+//this class is an handle to the presetclient
+//provides apis to access the presetserver functionalities
+
+NONSHARABLE_CLASS( CIRFavoritesDb ):public CBase ,public MPSPresetObserver
+	{
+
+public:
+
+    /**CIRFavoritesDb::NewL()
+    *standard symbian 1st phase constructor
+    *@return CIRFavoritesDb* ,db instance
+    */
+    IMPORT_C static CIRFavoritesDb* NewL();
+
+
+    /**CIRFavoritesDb::~CIRFavoritesDb()
+    *standard c++ destructor
+    */
+    ~CIRFavoritesDb();
+
+
+    /**CIRFavoritesDb::AddPresetL()
+    *exported function to add a preset
+    *@param CIRIsdsPreset& the isds preset,TInt index(not in use for 3.2)
+    *@return KerrNone on success,KErrNoMemory if the no of presets is 20
+    */
+   IMPORT_C void AddPresetL(CIRIsdsPreset& aPreset,TInt& aIndex, TBool aIsLogoAvialable=EFalse);
+
+
+    /**CIRFavoritesDb::AddPresetL()
+    *exported,overloaded function to add a preset manually
+    *@param TDesC name,TDesC url of the preset,TInt,TIntindex and id not in use for 3.2
+    *@return KerrNone on success,KErrNoMemory if the no of presets is 20
+    */
+	IMPORT_C void AddPresetL(const TDesC& aName,const TDesC& aURl,
+		TInt& aReturn, TBool aIsLogoAvialable=EFalse);
+
+
+    /**CIRFavoritesDb::DeletePresetL()
+    *exported, function to delete a preset
+    *@param TInt is the id of the preset to be deleted
+    *@return KerrNone on success,
+    */
+   IMPORT_C void DeletePresetL( TInt aUniqId );
+
+
+    /**CIRFavoritesDb::GetAllPresetL()
+    *exported,function to get the list of saved presets in the array iFavPresetList
+    */
+   IMPORT_C void GetAllPreset();
+
+    /*
+     * get all presets sorted by played times
+     */
+    IMPORT_C const RIRPresetArray& GetAllSortedPresets();
+    
+    /**CIRFavoritesDb::SearchPreset()
+    *exported, function to find out if a preset exists in the favorites list
+    *@param TInt the id of the preset to search.
+    *@return the index number of the preset being searched(if found) else KErrNotFound
+    */
+   IMPORT_C  TInt SearchPreset( const TInt aUniqPresetId,
+							  const TInt aIsdsPresetId);
+
+
+    /**CIRFavoritesDb::GetPreviousPreset()
+    *exported, function to find out if a preset exists in the favorites list
+    *@param TInt the id of the preset .
+    *@return the index number of the previous preset
+    */
+   IMPORT_C TInt GetPreviousPreset(TInt aIndex);
+
+
+    /**CIRFavoritesDb::GetNextPreset()
+    *exported, function to find out if a preset exists in the favorites list
+    *@param TInt the id of the preset .
+    *@return the index number of the next preset
+    */
+   IMPORT_C TInt GetNextPreset(TInt aIndex);
+
+
+
+	/**CIRFavoritesDb::SwapPresetsInDbL()
+	*returns the previous preset for a given presetId
+	*@param TInt,TInt,TInt,TIntswaps the presets between two
+	*channelIds for given channel Indices
+	*@return TInt system wode error code
+	**/
+   IMPORT_C void SwapPresetsInDbL(TInt aChannelIdFrom,TInt aChannelIdTo,
+   			TInt aChannelIndexFro,TInt aChannelIndexTo);
+
+
+	/**CIRFavoritesDb::ReplacePresetL()
+	*replaces a preset with a new preset
+	*@param CIRIsdsPreset instance
+	*for presetSync
+	*@return TInt system wode error code
+	**/
+   IMPORT_C void ReplacePresetL(CIRIsdsPreset& aNewPreset);
+
+
+   /**CIRFavoritesDb::ReplaceUserDefinedPresetL()
+	*replaces a userdefined preset with a new userdefined preset
+	*@param CIRIsdsPreset instance
+	*for presetSync
+	*@return TInt system wide error code
+	**/
+   IMPORT_C void ReplaceUserDefinedPresetL(CIRIsdsPreset& aNewPreset);
+
+
+	/**CIRFavoritesDb::MakePresetUserDefinedL()
+	*for a favorite preset that has been removed from the isds.
+	*it is made a user defined preset by changing the type to 0.
+	*index value is preseved so that the relative positions in the saved
+	*stations view remains the same.
+	*@param TInt,TInt
+	*@return TInt
+	**/
+   IMPORT_C void MakePresetUserDefinedL(TInt aChannelId,TInt aUserDefinedChannelId);
+
+	/**
+	*const RVRPresetArray& CVRPresetHandler::Presets() const
+	* @return RIRPresetArray& an array containing all Internet Radio presets.
+	*/
+	IMPORT_C const RIRPresetArray& Presets() const;
+	/**
+	*TInt CIRFavoritesDb::EmptyPresetCount() const
+	*Returns the number of empty presets
+	*@return TInt the number of empty presets
+	*/
+	IMPORT_C TInt EmptyPresetCount() const;
+
+   /**
+	*TInt CIRFavoritesDb::AddObserver( MPSPresetObserver& aObserver )
+	*Adds an observer that is notified upon changes in presets.
+	*@param MPSPresetObserver&
+	*/
+
+	IMPORT_C TInt AddObserver( const MPSPresetObserver& aObserver );
+
+   /**
+	*TInt CIRPresetHandler::RemoveObserver( MPSPresetObserver& aObserver )
+	*Removes an observer for a preset.
+	*/
+	IMPORT_C void RemoveObserver(const MPSPresetObserver& aObserver );
+
+	/**CIRFavoritesDb::MaxPresetCount()
+	*returns the maximum number of presets that can be stored in the favorites list
+	*@return TInt maximum number of presets that can be stored in the favorites list
+	**/
+	IMPORT_C TInt MaxPresetCount();
+	
+	/** CIRFavoritesDb::SetMoveStatus(TBool aStatus)
+	* @aStatus, sets the status of the Move functionality progression
+	**/
+	IMPORT_C void SetMoveStatus(TBool aStatus);
+	
+	/** CIRFavoritesDb::GetMoveStatus()
+	* returns the status of the Move functionality
+	**/
+	IMPORT_C TBool GetMoveStatus();
+
+    /*
+     * Increase the played times of a channel if it has been in the favorites
+     * return : KErrNone if success
+     *          KErrNotFound if the preset is not in the favorites
+     */
+	IMPORT_C TInt IncreasePlayedTimesL(const CIRIsdsPreset &aIsdsPreset);
+	
+	private:
+
+    /**CIRFavoritesDb::HandlePresetChangedL()
+    *function to notify a change in saved presets
+    *@param TInt,TUid,TPSReason the id of the preset,the id of the
+    *preset handler i.e CIRPreset,the reason of change.
+    */
+    void HandlePresetChangedL( TInt aId, TUid aDataHandler, MPSPresetObserver::TPSReason aReason );
+
+      
+	/**CIRFavoritesDb::MovePresetL()
+	*moves a preset to destination index
+	*@param TInt,TInt,the preset id ,the destination index
+	**/
+	void MovePresetL( const TInt aId,const TInt aDestinationIndex );
+
+
+	/**CIRFavoritesDb::ConstructL()
+	*Standard 2nd phase construction
+	**/
+    void ConstructL();
+
+
+    /**CIRFavoritesDb::SortByIndex()
+	*sorts the preset list by index
+	**/
+    void SortByIndex();
+
+	/**
+	*TInt CIRFavoritesDb::MatchingPresetId( TInt aId )
+	*returns the index of the preset whose id is aId
+	*@return TInt the index of the preset whose id is aId
+	*/
+	TInt MatchingPresetId( TInt aId );
+
+
+	/**
+	*TInt CIRFavoritesDb::CreatePresetL( TInt aIndex )
+	*creates a preset by the index aIndex
+	*@param TInt aIndex,index of the new preset
+	*@return CIRPreset*
+	*/
+	CIRPreset* CreatePresetL( TInt aIndex );
+
+	/*
+	 * Search a user defined preset by name and url
+	 */
+	TInt SearchUserDefinedPreset(const TDesC &aName, const TDesC &aUrl);
+	
+public:
+
+	/**
+	 *CIRFavoritesDb::PresetByIndex(TInt aIndex)
+	 * Returns a preset by its id.
+	 * @param   aId     Id of the preset.
+	 * @return  The preset matching the id or <code>NULL</code> if no such preset exists.
+	 */
+	CIRPreset* PresetByIndex( TInt aIndex );
+
+
+	 /**
+	 * CIRFavoritesDb::PresetById(TInt aIndex)
+	 * Returns a preset by its id.
+	 * @param   aId     Id of the preset.
+	 * @return  The preset matching the id or <code>NULL</code> if no such preset exists.
+	 */
+	IMPORT_C CIRPreset* PresetById( TInt aId );
+
+
+	/**the preset list accessible to ui*/
+    /** Internet Radio presets currently stored in the preset server. */
+    RIRPresetArray iFavPresetList;
+private:
+
+    /** Session with the preset server. */
+    RPSServ iServ;
+//private:
+    
+    /** Notifier that informs about changes in presets. */
+    CPSPresetNotifier* iNotifier;
+    /** Observers to notify when presets change. */
+    RPointerArray<MPSPresetObserver> iObservers;
+
+    /** The maximum number of supported presets. */
+    TInt iMaxPresetCount;
+    /**cenrep handle*/
+    CIRSettings *iSettings;
+    /**type of presets(source)*/
+    enum TChannelType
+    {
+    	EUserDefined,/**added by user*/
+    	EIsdsPreset,/**fetched from isds*/
+    };
+    
+    /** iMoveStatus, to know the status of the Move funcitionality */
+    TBool iMoveStatus;
+};
+
+#endif  //end IRFAVORITESDB_H