--- a/internetradio2.0/favoritesdbsrc/irfavoritesdb.cpp Tue Jul 06 14:07:20 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,916 +0,0 @@
-/*
-* 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
-*
-*/
-
-
-#include "pspresetnotifier.h"
-#include "pstransaction.h"
-#include "irdebug.h"
-#include "irfavoritesdb.h"
-#include "irisdspreset.h"
-#include "irpreset.h"
-#include "irsettings.h"
-
-const TInt KNullId = 0;
-const TInt KNineteen = 19;
-
-namespace PresetHandler
-{
-//-------------------------------------------------------------------------------
-//TInt OrderByIndex( const CIRPresetImpl& aPreset1, const CIRPresetImpl& aPreset2 )
-//-------------------------------------------------------------------------------
-//
- //Sort algorithm
- // Orders presets by their index.
- //
- TInt OrderByIndex( const CIRPreset& aPreset1, const CIRPreset& aPreset2 )
- {
- if ( aPreset1.Index() < aPreset2.Index() )
- {
- return -1;
- }
- else if ( aPreset1.Index() > aPreset2.Index() )
- {
- return 1;
- }
- else
- {
- return 0;
- }
- }
-
- TInt OrderByPlayedTimes(const CIRPreset& aPreset1, const CIRPreset& aPreset2)
- {
- int difference = aPreset1.GetPlayedTimes() - aPreset2.GetPlayedTimes();
- if (difference > 0)
- {
- return -1;
- }
- else if (difference == 0)
- {
- return aPreset1.Name().Compare(aPreset2.Name());
- }
- else
- {
- return 1;
- }
- }
-}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::NewL()
-//standard symbian 1st phase constructor
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C CIRFavoritesDb* CIRFavoritesDb::NewL()
- {
- IRLOG_DEBUG( "CIRFavoritesDb::NewL" );
- CIRFavoritesDb* self = new ( ELeave ) CIRFavoritesDb;
- CleanupStack::PushL( self );
- self->ConstructL();
- CleanupStack::Pop( self );
- IRLOG_DEBUG( "CIRFavoritesDb::NewL - Exiting." );
- return self;
- }
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::~CIRFavoritesDb()
-//standard c++ destructor
-//---------------------------------------------------------------------------
-//
-
-CIRFavoritesDb::~CIRFavoritesDb()
- {
- IRLOG_DEBUG( "CIRFavoritesDb::~CIRFavoritesDb" );
- delete iNotifier;
- iObservers.Close();
- //resets the preset array
- iFavPresetList.ResetAndDestroy();
- iFavPresetList.Close();
- iServ.Close();
-
- IRLOG_DEBUG( "CIRFavoritesDb::~CIRFavoritesDb - Exiting." );
- }
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::AddPresetL()
-//exported function to add a preset
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::AddPresetL(CIRIsdsPreset& aPreset,
- TInt& aRetVal, TBool /*aIsLogoAvialable*/)
- {
- IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL" );
- iMoveStatus=EFalse;
- SortByIndex() ;//sorted by index
- TBool presetSaved = EFalse;
-
- // Check the existence of preset before checking if the list is full
- // to avoid KErrNoMemory for a preset that exists in the list.
- TInt searchResult = 0;
- if (aPreset.GetChannelType() == 0)
- {
- searchResult = SearchUserDefinedPreset(aPreset.GetName(), aPreset.GetChannelUrlAtL(0));
- //we don't allow user to add presets with the same name
- if (searchResult >= 0)
- {
- ReplaceUserDefinedPresetL(aPreset);
- aRetVal = KErrAlreadyExists;
- return;
- }
- }
- else
- {
- searchResult = SearchPreset( aPreset.GetId(), KNullId );
- if( KErrNotFound != searchResult)
- {
- //Eventhough the preset exists in the favorites db, replace the
- //same with the new preset i.e. aPreset. Because the db should
- //contain the updated values of the preset.
- ReplacePresetL(aPreset);
-
- aRetVal = KErrAlreadyExists;
-
- return;
- }
- }
-
- if ( EmptyPresetCount()<=0 )
- {
- //max limit reached no more processing
- aRetVal = KErrNoMemory;
- return;
- }
-
- // Found the next empty place or replace
- for ( TInt j=0; j < MaxPresetCount() && !presetSaved; j++ )
- {
- CIRPreset* preset = PresetByIndex( j );
- TBool presetExisted = preset ? ETrue : EFalse;//presetExisted=1 if preset exists
-
- if ( !preset )
- {
- preset = CreatePresetL( j );//create if preset==NULL
- }
-
- if ( !presetExisted )//crete if preset did not exists
- {
- //open a transaction with the preset server
- CPSTransaction* transaction = preset->CreateTransactionLC();
- //Convert to Plugnized Preset
- //That is accepted by the preset server
- preset->CIRIsdsPresetToCIRPresetImpl(aPreset);
- //setname of CPSPresetInterface is called
- preset->SetNameL( aPreset.GetName() );
- transaction->CommitL();
- CleanupStack::PopAndDestroy( transaction );
- //added to check multiple insertion
- presetSaved = ETrue;
- }
- }
-
- aRetVal = KErrNone;
- IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL - Exiting." );
- }
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::AddPresetL()
-//exported,overloaded function to add a preset manually
-//converts the minimum data(name ,url) into an preset
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::AddPresetL(const TDesC& aName,
- const TDesC& aURl,TInt& aReturn, TBool /*aIsLogoAvialable*/)
- {
- IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL(des des int int)" );
- iMoveStatus=EFalse;
- CIRIsdsPreset* saveItem;
- saveItem = CIRIsdsPreset::NewLC();
- saveItem->SetName(aName);
- saveItem->SetUrlCount(1);//only one url is saved for manually added channel
- saveItem->SetChannelType(EUserDefined);
- _LIT(KNotAvailable,"NA");
- //bitrate set to zero so that it is accessible to all kinds of bitrate settings
- saveItem->SetUrlL(KNotAvailable,aURl,0);
- AddPresetL(*saveItem,aReturn);
- CleanupStack::PopAndDestroy(saveItem);
-
- IRLOG_DEBUG( "CIRFavoritesDb::AddPresetL(des des int int) - Exiting." );
- }
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::DeletePresetL()
-//exported, function to delete a preset
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::DeletePresetL( TInt aId )
- {
- IRLOG_DEBUG( "CIRFavoritesDb::DeletePresetL" );
- iMoveStatus=EFalse;
- iServ.DeletePresetL( aId);
-
- TInt count = iFavPresetList.Count();
- //when we delete one preset in the server's db, we also
- //need to delete it in the favorite list.
- for( TInt i=0; i<count; i++ )
- {
- if( aId == iFavPresetList[i]->Id())
- {
- //before Remove, the memory should be freed ahead.
- delete iFavPresetList[i];
- iFavPresetList.Remove(i);
- break;
- }
- }
- IRLOG_DEBUG( "CIRFavoritesDb::DeletePresetL - Exiting." );
- }
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::GetAllPresetL()
-//exported,function to get the list of saved presets in the array iFavPresetList
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::GetAllPreset()
- {
- IRLOG_DEBUG( "CIRFavoritesDb::GetAllPresetL" );
- //sort the array according to the index values
- SortByIndex();
- IRLOG_DEBUG( "CIRFavoritesDb::GetAllPresetL - Exiting." );
- }
-
-/*
- * get all presets sorted by played times
- */
-EXPORT_C const RIRPresetArray& CIRFavoritesDb::GetAllSortedPresets()
-{
- iFavPresetList.Sort( TLinearOrder<CIRPreset>(PresetHandler::OrderByPlayedTimes));
- return iFavPresetList;
-}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::SwapPresetsInDbL()
-//returns the previous preset for a given presetId
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::SwapPresetsInDbL( TInt aChannelIdFrom,
- TInt /*aChannelIdTo*/,TInt /*aChannelIndexFro*/,TInt aChannelIndexTo )
- {
- IRLOG_DEBUG( "CIRFavoritesDb::SwapPresetsInDbL" );
- MovePresetL( aChannelIdFrom,aChannelIndexTo);
- IRLOG_DEBUG( "CIRFavoritesDb::SwapPresetsInDbL - Exiting." );
- }
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::MovePresetL()
-//moves a preset to destination index
-//---------------------------------------------------------------------------
-//
-
- void CIRFavoritesDb::MovePresetL( const TInt aId, const TInt aDestinationIndex )
- {
- IRLOG_DEBUG( "CIRFavoritesDb::MovePresetL" );
- ASSERT( aDestinationIndex >= 0 && aDestinationIndex < iFavPresetList.Count() );
- if( aDestinationIndex < 0 || aDestinationIndex >= iFavPresetList.Count())
- {
- User::Leave(KErrArgument);
- }
-
- TInt fakeIndex=iFavPresetList[aDestinationIndex]->Index();
- SetMoveStatus(ETrue);
- iServ.MovePresetL( aId, fakeIndex );
- IRLOG_DEBUG( "CIRFavoritesDb::MovePresetL - Exiting." );
- }
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::SetMoveStatus()
-//sets the status of Move functionality
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CIRFavoritesDb::SetMoveStatus(TBool aStatus)
- {
- iMoveStatus = aStatus;
- }
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::GetMoveStatus()
-//returns the status of the Move functionality
-//---------------------------------------------------------------------------
-//
-EXPORT_C TBool CIRFavoritesDb::GetMoveStatus()
- {
- return iMoveStatus;
- }
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::SearchPreset()
-//exported, function to find out if a preset exists in the favorites list
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C TInt CIRFavoritesDb::SearchPreset( const TInt aIsdsPresetId,
- const TInt aUniqPresetId)
- {
- IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset" );
- TInt count = iFavPresetList.Count();
- TInt iter;
- //for isds presets
- if(aIsdsPresetId!=KNullId)
- {
- for(iter=0;iter<count;iter++)
- {
- if(iFavPresetList[iter]->GetId() == aIsdsPresetId)
- {
- IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset - Exiting (1)." );
- return iter;
- }
- }
- }
- if(aUniqPresetId != KNullId )
- //for manually added presets
- {
- for(iter=0;iter<count;iter++)
- {
- if(aUniqPresetId==iFavPresetList[iter]->Id())
- {
- IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset - Exiting (2)." );
- return iter;
- }
- }
- }
- // both the parameters are null implies that the preset is a non saved station
- IRLOG_DEBUG( "CIRFavoritesDb::SearchPreset - Exiting (3)." );
- return KErrNotFound;
- }
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::GetPreviousPreset()
-//exported, function to find out if a preset exists in the favorites list
-//---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRFavoritesDb::GetNextPreset(TInt aIndex)
- {
- if ( (aIndex==(iFavPresetList.Count()-1))||aIndex==KNineteen )
- {
- return 0;
- }
- else
- {
- return aIndex+1;
- }
- }
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::GetNextPreset()
-//exported, function to find out if a preset exists in the favorites list
-//---------------------------------------------------------------------------
-//
-EXPORT_C TInt CIRFavoritesDb::GetPreviousPreset( TInt aIndex )
- {
- if ( aIndex==0 )
- {
- TInt val=(iFavPresetList.Count()-1);
- return val;
- }
- else
- {
- return aIndex-1;
- }
- }
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::ReplacePresetL()
-//replaces a preset with a new preset
-//for presetSync
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::ReplacePresetL( CIRIsdsPreset& aNewPreset )
-{
- IRLOG_DEBUG( "CIRFavoritesDb::ReplacePresetL" );
- iMoveStatus=EFalse;
- CIRPreset* preset;
- TInt index = SearchPreset(aNewPreset.GetId(),KNullId);
- //actual index
- if (index >= 0)
- {
- ASSERT( index >= 0 || index < iFavPresetList.Count() );
- index = iFavPresetList[index]->Index();
- preset = PresetByIndex(index);
- if (preset)
- {
- CPSTransaction* transaction = preset->CreateTransactionLC();
- //change the preset data and commit
- //update 'name' only if this station has not been renamed before
- if (preset->GetRenamed())
- {
- aNewPreset.SetName(preset->Name());
- }
- preset->CIRIsdsPresetToCIRPresetImpl(aNewPreset);
- preset->SetChannelType(EIsdsPreset);
- transaction->CommitL();
- CleanupStack::PopAndDestroy( transaction );
- }
- }
- IRLOG_DEBUG( "CIRFavoritesDb::ReplacePresetL - Exiting." );
-}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::ReplaceUserDefinedPresetL()
-//replaces a userdefined preset with a new userdefiend preset
-//for presetSync
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CIRFavoritesDb::ReplaceUserDefinedPresetL(CIRIsdsPreset& aNewPreset)
-{
- IRLOG_DEBUG( "CIRFavoritesDb::ReplaceUserDefinedPresetL" );
- iMoveStatus=EFalse;
- TInt index = SearchUserDefinedPreset(aNewPreset.GetName(), aNewPreset.GetChannelUrlAtL(0));
-
- if (index >= 0 && index < iFavPresetList.Count())
- {
- CIRPreset* preset = iFavPresetList[index];
- if (preset)
- {
- CPSTransaction* transaction = preset->CreateTransactionLC();
- /**
- * change the preset data and commit
- */
- preset->CIRIsdsPresetToCIRPresetImpl(aNewPreset);
- preset->SetChannelType(EUserDefined);
- preset->SetNameL(aNewPreset.GetName());
- preset->SetDescription(aNewPreset.GetShortDescription());
- transaction->CommitL();
- CleanupStack::PopAndDestroy(transaction);
- }
- }
- IRLOG_DEBUG( "CIRFavoritesDb::ReplaceUserDefinedPresetL - Exiting." );
-}
-
-
-
-
-
-
-//---------------------------------------------------------------------------
-//IRFavoritesDb::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.
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C void CIRFavoritesDb::MakePresetUserDefinedL( TInt aChannelId,
- TInt /*aUserDefinedChannelId*/ )
- {
- IRLOG_DEBUG( "CIRFavoritesDb::MakePresetUserDefinedL" );
- iMoveStatus=EFalse;
- //to match the function signature
- TInt index = SearchPreset(aChannelId,KNullId);
- CIRPreset* preset;
- //actual index
- if (index >= 0)
- {
- ASSERT( index >= 0 || index < iFavPresetList.Count() );
- index = iFavPresetList[index]->Index();
- preset = PresetByIndex(index);
- if(preset)
- {
- CPSTransaction* transaction = preset->CreateTransactionLC();
- //convert the flag to user defined and commit
- preset->SetChannelType(EUserDefined);
- //assign null id
- preset->SetId(KNullId);
-
- //make logo as null;;;; added for 2.0
- _LIT8(KEmpty, "");
- RBuf8 tempLogo;
- tempLogo.Create(KEmpty);
- preset->SetLogoData(tempLogo);
- tempLogo.Close();
- _LIT(KEmptyString, "");
- RBuf tempString;
- tempString.Create(KEmptyString);
- //set imgurl to null
- preset->SetImgUrl(tempString);
- //set genre to null
- preset->SetGenreInfo(tempString,tempString);
- //set language to null
- preset->SetLang(tempString);
- //set country to null
- preset->SetCountryName(tempString);
- tempString.Close();
- //set musicStoreEnabled filed to "no";;;;added for 2.0
- _LIT(KNo, "no");
- RBuf tempMusicStoreEnabled;
- tempMusicStoreEnabled.Create(KNo);
- preset->SetMusicStoreStatus(tempMusicStoreEnabled);
- tempMusicStoreEnabled.Close();
-
- transaction->CommitL();
- CleanupStack::PopAndDestroy( transaction );
- }
- }
- IRLOG_DEBUG( "CIRFavoritesDb::MakePresetUserDefinedL - Exiting." );
- }
-
-//---------------------------------------------------------------------------
-//const RVRPresetArray& CVRPresetHandler::Presets() const
-// RIRPresetArray& an array containing all Internet Radio presets.
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C const RIRPresetArray& CIRFavoritesDb::Presets() const
- {
- IRLOG_DEBUG( "CIRFavoritesDb::Presets" );
- //sort by
- return iFavPresetList;
- }
-
-/*
- * 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
- */
-EXPORT_C TInt CIRFavoritesDb::IncreasePlayedTimesL(const CIRIsdsPreset &aIsdsPreset)
-{
- //step 1 : search the preset in favorites
- SortByIndex();
- TInt index = 0;
- if (aIsdsPreset.GetChannelType() == 0)
- {
- index = SearchUserDefinedPreset(aIsdsPreset.GetName(), aIsdsPreset.GetChannelUrlAtL(0));
- }
- else
- {
- index = SearchPreset(aIsdsPreset.GetId(), KNullId);
- }
-
- if (KErrNotFound == index)
- {
- return KErrNotFound;
- }
-
- //step 2 : update the played times of the preset
- CIRPreset *irPreset = iFavPresetList[index];
- //open a transaction with the preset server
- CPSTransaction* transaction = irPreset->CreateTransactionLC();
- irPreset->SetPlayedTimes(irPreset->GetPlayedTimes() + 1);
- transaction->CommitL();
- CleanupStack::PopAndDestroy(transaction);
-
- return KErrNone;
-}
-
-EXPORT_C TInt CIRFavoritesDb::RenamePresetL(const CIRIsdsPreset &aIsdsPreset, const TDesC &aNewName)
-{
- TInt index = 0;
- if (aIsdsPreset.GetChannelType() == 0)
- {
- index = SearchUserDefinedPreset(aNewName, aIsdsPreset.GetChannelUrlAtL(0));
- if (KErrNotFound != index)
- {
- //there is already a user-defined station with same name and url
- return KErrAlreadyExists;
- }
- else
- {
- index = SearchUserDefinedPreset(aIsdsPreset.GetName(), aIsdsPreset.GetChannelUrlAtL(0));
- }
- }
- else
- {
- index = SearchPreset(aIsdsPreset.GetId(), KNullId);
- }
-
- if (KErrNotFound == index)
- {
- return KErrNotFound;
- }
-
- CIRPreset *irPreset = iFavPresetList[index];
- //open a transaction with the preset server
- CPSTransaction* transaction = irPreset->CreateTransactionLC();
- irPreset->SetNameL(aNewName);
- irPreset->SetRenamed();
- transaction->CommitL();
- CleanupStack::PopAndDestroy(transaction);
-
- return KErrNone;
-}
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::ConstructL()
-//Standard 2nd phase construction
-//---------------------------------------------------------------------------
-//
-
-void CIRFavoritesDb::ConstructL()
- {
- IRLOG_DEBUG( "CIRFavoritesDb::ConstructL" );
- //cenrep handle
- CIRSettings *settings = CIRSettings::OpenL();
- iMaxPresetCount=settings->MaxPresetCount();
- settings->Close();
-
- User::LeaveIfError( iServ.Connect() );
- //a session to the client of the preset server
- iServ.GetPresetsL( iFavPresetList, KIRPreset );
- //notifier
- iNotifier = CPSPresetNotifier::NewL( iServ, *this );
-
- //initialization of the list for UI use
- //iFavPresetList=new(ELeave)CArrayPtrFlat<CIRPreset>(KGranularity)
- iMoveStatus=EFalse;
- IRLOG_DEBUG( "CIRFavoritesDb::ConstructL - Exiting." );
- }
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::SortByIndex()
-//sorts the preset list by index
-//---------------------------------------------------------------------------
-//
-
-void CIRFavoritesDb::SortByIndex()
- {
- IRLOG_DEBUG( "CIRFavoritesDb::SortByIndex" );
- //The sort order is determined by an algorithm supplied by the caller
- //and packaged as a TLinerOrder<T>
- iFavPresetList.Sort( TLinearOrder<CIRPreset>( PresetHandler::OrderByIndex ) );
- IRLOG_DEBUG( "CIRFavoritesDb::SortByIndex - Exiting." );
- }
-
-//---------------------------------------------------------------------------
-//EXPORT_C TInt CIRFavoritesDb::MaxPresetCount()
-//returns the maximum number of presets that can be stored in the favorites list
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C TInt CIRFavoritesDb::MaxPresetCount()
- {
- IRLOG_DEBUG( "CIRFavoritesDb::MaxPresetCount" );
- return iMaxPresetCount;
- }
-
-//---------------------------------------------------------------------------
-//TInt CIRFavoritesDb::EmptyPresetCount() const
-//Returns the number of empty presets
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C TInt CIRFavoritesDb::EmptyPresetCount() const
- {
- IRLOG_DEBUG( "CIRFavoritesDb::EmptyPresetCount" );
- return iMaxPresetCount - iFavPresetList.Count();
- }
-
-
-
-//---------------------------------------------------------------------------
-//TInt CIRFavoritesDb::AddObserver( MPSPresetObserver& aObserver )
-//Adds an observer that is notified upon changes in presets.
-//---------------------------------------------------------------------------
-//
-
-EXPORT_C TInt CIRFavoritesDb::AddObserver(const MPSPresetObserver& aObserver )
- {
- IRLOG_DEBUG( "CIRFavoritesDb::AddObserver" );
- return iObservers.InsertInAddressOrder( &aObserver );
- }
-
-
-//---------------------------------------------------------------------------
-//TInt CIRPresetHandler::RemoveObserver( MPSPresetObserver& aObserver )
-//Removes an observer for a preset.
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CIRFavoritesDb::RemoveObserver(const MPSPresetObserver& aObserver )
- {
- TInt idx = iObservers.FindInAddressOrder( &aObserver );
-
- if ( idx >= 0 )
- {
- iObservers.Remove( idx );
- iObservers.Compress();
- }
- }
-
-//---------------------------------------------------------------------------
-//TInt CIRFavoritesDb::MatchingPresetId( TInt aId )
-//---------------------------------------------------------------------------
-//
-
-TInt CIRFavoritesDb::MatchingPresetId( TInt aId )
- {
- TInt indx = KErrNotFound;
-
- SortByIndex() ;
-
- for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
- {
- if (iFavPresetList[i]->Id() == aId )
- {
- indx = iFavPresetList[i]->Index();
- /*lint -save -e960 Note -- Violates MISRA Required Rule 58,
- non-switch break used*/
- break;
- /*lint -restore */
- }
- }
-
- return indx;
- }
-
-//---------------------------------------------------------------------------
-//TInt CIRFavoritesDb::CreatePresetL( TInt aIndex )
-//creates a preset by the index aIndex
-//---------------------------------------------------------------------------
-//
-
-CIRPreset* CIRFavoritesDb::CreatePresetL( TInt aIndex )
- {
- IRLOG_DEBUG( "CIRFavoritesDb::CreatePresetL" );
- CIRPreset* preset = static_cast<CIRPreset*>( iServ.CreatePresetL(
- aIndex, KIRPreset) );
- CleanupStack::PushL( preset );
- iFavPresetList.AppendL( preset );
- CleanupStack::Pop( preset );
- IRLOG_DEBUG( "CIRFavoritesDb::CreatePresetL - Exiting." );
- return preset;
- }
-
-/*
- * Search a user defined preset by name and url
- */
-TInt CIRFavoritesDb::SearchUserDefinedPreset(const TDesC &aName, const TDesC &aUrl)
- {
- TInt count = iFavPresetList.Count();
- for (TInt index = 0; index < count; ++index)
- {
- CIRPreset *preset = iFavPresetList[index];
- const TDesC &name = preset->Name();
- TInt urlCount = preset->GetUrlCount();
- if(preset->GetUrlCount()>0)
- {
- const TDesC &url = preset->GetChannelUrlAt(0);
- if (preset->GetChannelType() == 0 &&
- name == aName &&
- url == aUrl)
- {
- return index;
- }
- }
- else
- {
- if (preset->GetChannelType() == 0 &&
- name == aName &&
- aUrl == KNullDesC)
- {
- return index;
- }
- }
- }
-
- return KErrNotFound;
- }
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::PresetByIndex(TInt aIndex)
-// Returns a preset by its id.
-//---------------------------------------------------------------------------
-//
-EXPORT_C CIRPreset* CIRFavoritesDb::PresetByIndex( TInt aIndex )
- {
- IRLOG_DEBUG( "CIRFavoritesDb::PresetByIndex" );
-
- CIRPreset* preset = NULL;
-
- for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
- {
- if (iFavPresetList[i]->Index()==aIndex)
- {
- preset = iFavPresetList[i];
- /*lint -save -e960 (Note -- Violates MISRA Required Rule 58, non-switch break used)*/
- break;
- /*lint -restore*/
- }
- }
- IRLOG_DEBUG( "CIRFavoritesDb::PresetByIndex - Exiting." );
- return preset;
- }
-
-//---------------------------------------------------------------------------
-// CIRFavoritesDb::PresetById(TInt aIndex)
-//Returns a preset by its id.
-//---------------------------------------------------------------------------
-//
-EXPORT_C CIRPreset* CIRFavoritesDb::PresetById( TInt aId )
- {
- IRLOG_DEBUG( "CIRFavoritesDb::PresetById" );
-
- CIRPreset* preset = NULL;
-
- for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
- {
- if ( iFavPresetList[i]->Id() == aId )
- {
- preset = iFavPresetList[i];
- /*lint -save -e960 Note -- Violates MISRA Required Rule 58,
- non-switch break used*/
- break;
- /*lint -restore */
- }
- }
- IRLOG_DEBUG( "CIRFavoritesDb::PresetById - Exiting." );
-
- return preset;
- }
-
-
-//---------------------------------------------------------------------------
-//CIRFavoritesDb::HandlePresetChangedL()
-//function to notify a change in saved presets
-//preset handler i.e CIRPreset,the reason of change.
-//---------------------------------------------------------------------------
-//
-EXPORT_C void CIRFavoritesDb::HandlePresetChangedL( TInt aId,
- TUid aDataHandler, MPSPresetObserver::TPSReason aReason )
- {
- IRLOG_DEBUG( "CIRFavoritesDb::HandlePresetChangedL" );
- if ( aDataHandler == KIRPreset )
- {
- switch ( aReason )
- {
- case MPSPresetObserver::EPSCreated:
- {
- //call back from the preset client
- //to append a preset when the preset is added
- CPSPresetInterface* preset = NULL;
- preset = PresetById( aId );
- if ( !preset )
- {
- preset = iServ.OpenPresetL( aId );
- CleanupStack::PushL( preset );
- iFavPresetList.AppendL( static_cast<CIRPreset*>( preset ) );
- CleanupStack::Pop( preset );
- }
-
- }
- break;
- case MPSPresetObserver::EPSDeleted:
- {
- //call back from the preset client
- //to remove a preset when the preset is deleted
- for ( TInt i = 0; i < iFavPresetList.Count(); i++ )
- {
- if ( iFavPresetList[i]->Id() == aId )
- {
- delete iFavPresetList[i];
- iFavPresetList.Remove( i );
- /*lint -save -e960 (Note -- Violates MISRA Required Rule 58, non-switch break used)*/
- break;
- /*lint -restore*/
- }
- }
- }
- break;
- case MPSPresetObserver::EPSModified:
- break;
- default:
- break;
- }
-
- for ( TInt i = 0; i < iObservers.Count(); i++ )
- {
- iObservers[i]->HandlePresetChangedL( aId, aDataHandler, aReason );
- }
-
- }
- IRLOG_DEBUG( "CIRFavoritesDb::HandlePresetChangedL - Exiting." );
-
- }
-
-