diff -r a36789189b53 -r 095bea5f582e mmserv/radioutility/fmpresetutility/src/RadioFmPresetCentralRepositoryHandler.cpp --- a/mmserv/radioutility/fmpresetutility/src/RadioFmPresetCentralRepositoryHandler.cpp Thu Aug 19 10:26:11 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,826 +0,0 @@ -/* -* Copyright (c) 2005 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: Contains implementation of the CCentralRepositoryHandler class. -* -*/ - - -// INCLUDE FILES -#include "RadioFmPresetCentralRepositoryHandler.h" -#include "RadioFmPresetRadioSettings.h" -#include -#include "RadioFmPresetCRKeys.h" -#include "RadioFmPresetUtilityBody.h" -#include "debug.h" -#include - - -// ============= STATIC FUNCTIONS ============== - -static TInt ChannelIndexL( const TInt aChannelIndex ) - { - if ( ( KMaxNumberOfPresetStations <= aChannelIndex ) || - ( 0 > aChannelIndex ) ) - { - User::Leave( KErrArgument ); - } - return KFmRadioPresetChannel1 + - ( KNbrOfParametersPerChannelSequence * (aChannelIndex) ); - } - -// ---------------------------------------------------- -// CalculateNameIndexL -// Calculates key index for channel's name parameter for. -// Returns: key index of channel name parameter -// ---------------------------------------------------- -// -static TInt CalculateNameIndexL( TInt aChannelIndex ) - { - return (ChannelIndexL( aChannelIndex ) + KChannelNameOffset); - } - -// ---------------------------------------------------- -// CalculateFrequencyIndexL -// Calculates key index for channel's frequency parameter. -// Returns: key index of channel frequency parameter -// ---------------------------------------------------- -// -static TInt CalculateFrequencyIndexL( TInt aChannelIndex ) - { - return (ChannelIndexL( aChannelIndex ) + KFrequencyOffset); - } - -// ---------------------------------------------------- -// CalculateUrlIndexL -// Calculates key index for channel's URL parameter. -// Returns: key index of channel URL parameter -// ---------------------------------------------------- -// -static TInt CalculateUrlIndexL( TInt aChannelIndex ) - { - return (ChannelIndexL( aChannelIndex ) + KUrlOffset); - } - -// ---------------------------------------------------- -// CalculateRestOfParametersIndexL -// Calculates key index for channel's other parameters. -// Returns: key index of channel other parameters -// ---------------------------------------------------- -// -static TInt CalculateRestOfParametersIndexL( TInt aChannelIndex ) - { - return (ChannelIndexL( aChannelIndex ) + KRestOfParametersOffset); - } - -// ============================ MEMBER FUNCTIONS =============================== - -// ---------------------------------------------------- -// CCentralRepositoryHandler::CCentralRepositoryHandler -// Default class constructor. -// ---------------------------------------------------- -// -CCentralRepositoryHandler::CCentralRepositoryHandler( - TRadioSettings& aRadioSettings) // a reference to aRadioSettings - :iRadioSettings(&aRadioSettings) - { - FTRACE(FPrint(_L("calling CCentralRepositoryHandler::NewL()"))); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::ConstructL -// Second phase class constructor. -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::ConstructL() - { - RDebug::Print(_L("entering CCentralRepositoryHandler::ConstructL()")); - TRAPD (err, iCentralRepository = CRepository::NewL(KCRUidFmPresetUtility)); - RDebug::Print(_L("err[%d]"), err); - RDebug::Print(_L("calling CCentralRepositoryHandler::RetrieveInitialSettings()")); - RetrieveInitialSettings(); - RDebug::Print(_L("exiting CCentralRepositoryHandler::ConstructL()")); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::NewL -// Two-phased class constructor. -// ---------------------------------------------------- -// -CCentralRepositoryHandler* CCentralRepositoryHandler::NewL( - TRadioSettings& aRadioSettings) // a reference to aRadioSettings - { - RDebug::Print(_L("entering CCentralRepositoryHandler::NewL()")); - CCentralRepositoryHandler *self = new(ELeave) CCentralRepositoryHandler(aRadioSettings); - CleanupStack::PushL(self); - self->ConstructL(); - CleanupStack::Pop(self); - return self; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::~CCentralRepositoryHandler -// Destructor of CCentralRepositoryHandler class. -// ---------------------------------------------------- -// -CCentralRepositoryHandler::~CCentralRepositoryHandler() - { - iRadioSettings = NULL; - if(iCentralRepository) - { - delete iCentralRepository; - } - } - - -// ---------------------------------------------------- -// CCentralRepositoryHandler::RetrieveInitialSettings -// Retrieves persistent settings from shared data. -// Returns: None -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::RetrieveInitialSettings() - { - - - - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::RetrievePresetFrequency -// Retrieve the preset frequency from shared data -// Returns: None -// ---------------------------------------------------- -// -TInt CCentralRepositoryHandler::RetrievePresetFrequencyL( - TInt aIndex) const // the preset index - { - TInt tempFrequency( KErrNotFound ); - // Read frequency from its own key in the key sequence - iCentralRepository->Get( CalculateFrequencyIndexL( aIndex ), tempFrequency ); - return tempFrequency; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::RetrievePresetName -// Retrieve the preset name from shared data -// Returns: None -// ---------------------------------------------------- -// -TFmPresetName CCentralRepositoryHandler::RetrievePresetNameL( - TInt aIndex) const // the preset channel index - { - // Read name from its own key in the key sequence - TInt nameIndex( CalculateNameIndexL( aIndex ) ); - TFmPresetName tempChannelName; - iCentralRepository->Get(nameIndex, tempChannelName ); - return tempChannelName; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::RetrievePresetUrl -// Retrieve the preset Url from shared data -// Returns: None -// ---------------------------------------------------- -// -TFmPresetUrl CCentralRepositoryHandler::RetrievePresetUrlL( - TInt aIndex) const // the preset channel index - { - // Read url from its own key in the key sequence - TInt urlIndex( CalculateUrlIndexL( aIndex ) ); - TFmPresetUrl tempUrlName; - iCentralRepository->Get(urlIndex, tempUrlName ); - return tempUrlName; //ownership moves to the caller - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::RetrievePresetPTYL -// Retrieve the preset PTY from shared data -// Returns: tempPTY: the channel PTY -// ---------------------------------------------------- -// -TUint CCentralRepositoryHandler::RetrievePresetPTYL( - TInt aIndex) const // the preset index - { - TUint tempPTY = KDefaultRadioPTY; - HBufC8* buf = HBufC8::NewLC( sizeof(TPresetChannel) ); - TPtr8 bufPtr = buf->Des(); - TInt tempChannelIndex( CalculateRestOfParametersIndexL( aIndex ) ); - TInt errCode = iCentralRepository->Get( tempChannelIndex, bufPtr ); - if(KErrNone == errCode) - { - if (bufPtr.Length() != 0) - { - tempPTY = ConvertStringToChannelPTYL(bufPtr); - } - } - CleanupStack::PopAndDestroy(buf); - return tempPTY; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::RetrievePresetPIL -// Retrieve the preset PI from shared data -// Returns: tempPI: the channel PI -// ---------------------------------------------------- -// -TUint CCentralRepositoryHandler::RetrievePresetPIL( - TInt aIndex) const // the preset index - { - TUint tempPI = KDefaultRadioPI; - HBufC8* buf = HBufC8::NewLC( sizeof(TPresetChannel) ); - TPtr8 bufPtr = buf->Des(); - TInt tempChannelIndex( CalculateRestOfParametersIndexL( aIndex ) ); - TInt errCode = iCentralRepository->Get( tempChannelIndex, bufPtr ); - if(KErrNone == errCode) - { - if (bufPtr.Length() != 0) - { - tempPI = ConvertStringToChannelPIL(bufPtr); - } - } - CleanupStack::PopAndDestroy(buf); - return tempPI; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::RetrievePresetFavouriteL -// Retrieve the preset favourite information from shared data -// Returns: tempFav: the channel local station flag -// ---------------------------------------------------- -// -TBool CCentralRepositoryHandler::RetrievePresetFavouriteL( - TInt aIndex) const // the preset index - { - TBool tempFav = EFalse; - HBufC8* buf = HBufC8::NewLC(sizeof(TPresetChannel)); - TPtr8 bufPtr = buf->Des(); - TInt tempChannelIndex( CalculateRestOfParametersIndexL( aIndex ) ); - TInt errCode = iCentralRepository->Get(tempChannelIndex, bufPtr); - if(KErrNone == errCode) - { - if (bufPtr.Length() != 0) - { - tempFav = ConvertStringToChannelFavouriteL(bufPtr); - } - } - CleanupStack::PopAndDestroy(buf); - return tempFav; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::RetrievePresetUserRenameL -// Retrieve the preset user rename information from shared data -// Returns: tempRen: the channel user rename flag -// ---------------------------------------------------- -// -TBool CCentralRepositoryHandler::RetrievePresetUserRenameL( - TInt aIndex) const // the preset index - { - TBool tempRen = EFalse; - HBufC8* buf = HBufC8::NewLC(sizeof(TPresetChannel)); - TPtr8 bufPtr = buf->Des(); - TInt tempChannelIndex( CalculateRestOfParametersIndexL( aIndex ) ); - TInt errCode = iCentralRepository->Get(tempChannelIndex, bufPtr); - if(KErrNone == errCode) - { - if (bufPtr.Length() != 0) - { - tempRen = ConvertStringToChannelUserRenameL(bufPtr); - } - } - CleanupStack::PopAndDestroy(buf); - return tempRen; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::SavePresetFrequency -// Save channel preset info back to shared data -// Returns: None -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::SavePresetFrequencyL( - TInt aIndex, // preset channel index - TInt aFrequency) //new frequency - { - TInt frequencyIndex( CalculateFrequencyIndexL( aIndex ) ); - User::LeaveIfError( iCentralRepository->Set(frequencyIndex, aFrequency ) ); - if ( 0 >= aFrequency ) - { - // aFrequency values 0, -1(Or <=0) means that it is better to destroy - // rest of parameters and also URL - iCentralRepository->Delete( CalculateRestOfParametersIndexL( aIndex ) ); - iCentralRepository->Delete( CalculateUrlIndexL( aIndex ) ); - } - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::SavePresetName -// Save channel preset name back to shared data -// Returns: None -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::SavePresetNameL( - TInt aIndex, //the preset channel index - const TFmPresetName& aStationName ) //preset channel name - { - TInt nameIndex( CalculateNameIndexL(aIndex) ); - TPtrC namePtr( aStationName ); - User::LeaveIfError( iCentralRepository->Set( nameIndex, namePtr) ); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::SavePresetUrlL -// Save channel preset url back to shared data -// Returns: None -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::SavePresetUrlL( - TInt aIndex, //the preset channel index - const TFmPresetUrl& aStationUrl ) //preset Url - { - TInt urlIndex( CalculateUrlIndexL(aIndex) ); - TPtrC urlPtr( aStationUrl ); - User::LeaveIfError( iCentralRepository->Set( urlIndex, urlPtr ) ); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::SavePresetPIL -// Save channel PI code back to shared data -// Returns: None -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::SavePresetPIL( - TInt aIndex, // preset channel index - TUint aPI) // new programme identification code - { - TPresetChannel presetChannel; - TInt restOfParametersIndex( CalculateRestOfParametersIndexL( aIndex ) ); - HBufC8* buf = HBufC8::NewLC(sizeof(TPresetChannel)); - TPtr8 bufPtr = buf->Des(); - UpdateChannelObjectWithPIL(aIndex, presetChannel, aPI); - ExternalizeToStreamL(presetChannel, bufPtr); - User::LeaveIfError( iCentralRepository->Set(restOfParametersIndex, bufPtr ) ); - CleanupStack::PopAndDestroy(buf); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::SavePresetPTYL -// Save channel PTY code back to shared data -// Returns: None -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::SavePresetPTYL( - TInt aIndex, // preset channel index - TUint aPTY) // new programme identification code - { - TPresetChannel presetChannel; - TInt restOfParametersIndex( CalculateRestOfParametersIndexL( aIndex ) ); - HBufC8* buf = HBufC8::NewLC(sizeof(TPresetChannel)); - TPtr8 bufPtr = buf->Des(); - UpdateChannelObjectWithPTYL(aIndex, presetChannel, aPTY); - ExternalizeToStreamL(presetChannel, bufPtr); - User::LeaveIfError( iCentralRepository->Set(restOfParametersIndex, bufPtr ) ); - CleanupStack::PopAndDestroy(buf); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::SavePresetFavouriteInfoL -// Save channel favourite station info back to shared data -// Returns: None -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::SavePresetFavouriteInfoL( - TInt aIndex, // preset channel index - TBool aFav) // new programme favourite status - { - TPresetChannel presetChannel ; - TInt restOfParametersIndex( CalculateRestOfParametersIndexL( aIndex ) ); - HBufC8* buf = HBufC8::NewLC(sizeof(TPresetChannel)); - TPtr8 bufPtr = buf->Des(); - UpdateChannelObjectWithFavouriteInfoL(aIndex, presetChannel, aFav); - ExternalizeToStreamL(presetChannel, bufPtr); - User::LeaveIfError( iCentralRepository->Set(restOfParametersIndex, bufPtr ) ); - CleanupStack::PopAndDestroy(buf); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::SavePresetUserRenameInfoL -// Save channel favourite station info back to shared data -// Returns: None -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::SavePresetUserRenameInfoL( - TInt aIndex, // preset channel index - TBool aUR) // new programme user rename status - { - TPresetChannel presetChannel; - TInt restOfParametersIndex( CalculateRestOfParametersIndexL( aIndex ) ); - HBufC8* buf = HBufC8::NewLC(sizeof(TPresetChannel)); - TPtr8 bufPtr = buf->Des(); - UpdateChannelObjectWithUserRenameInfoL(aIndex, presetChannel, aUR); - ExternalizeToStreamL(presetChannel, bufPtr); - User::LeaveIfError( iCentralRepository->Set(restOfParametersIndex, bufPtr ) ); - CleanupStack::PopAndDestroy(buf); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::SaveFmPresetSettings -// Save all FmPreset related persistent info back to shared data -// Returns: None -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::SaveFmPresetSettings() - { - /* DEPRECATED. Not used anymore - iCentralRepository->Set( KFmRadioFrequency, iRadioSettings->Frequency() ); - iCentralRepository->Set( KFmRadioChannel, iRadioSettings->CurrentPreset() ); - */ - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::ConvertStringToChannelPTYL -// Get the channel programme type code from the externalized stream -// Returns: tempPTY: the channel PTY -// ?value_n: ?description -// ?description -// ---------------------------------------------------- -// -TUint CCentralRepositoryHandler::ConvertStringToChannelPTYL( - const TDesC8& aString) const // a reference to the raw string - { -RDebug::Print (_L ("Entering CCentralRepositoryHandler::ConvertStringToChannelPTYL")); - TUint tempPTY = KDefaultRadioPTY; - TPresetChannel tempPresetChannel; - RDesReadStream inStream; - inStream.Open(aString); - CleanupClosePushL(inStream); - tempPresetChannel.InternalizeL(inStream); - CleanupStack::PopAndDestroy(&inStream); - tempPTY = tempPresetChannel.ChannelPty(); -RDebug::Print (_L ("Exiting CCentralRepositoryHandler::ConvertStringToChannelPTYL")); - return tempPTY; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::ConvertStringToChannelPIL -// Get the channel programme identification code from the externalized stream -// Returns: tempPI: the channel PI -// ?value_n: ?description -// ?description -// ---------------------------------------------------- -// -TUint CCentralRepositoryHandler::ConvertStringToChannelPIL( - const TDesC8& aString) const // a reference to the raw string - { -RDebug::Print (_L ("Entering CCentralRepositoryHandler::ConvertStringToChannelPIL")); - TUint tempPI = KDefaultRadioPI; - TPresetChannel tempPresetChannel; - RDesReadStream inStream; - inStream.Open(aString); - CleanupClosePushL(inStream); - tempPresetChannel.InternalizeL(inStream); - CleanupStack::PopAndDestroy(&inStream); - tempPI = tempPresetChannel.ChannelPI(); -RDebug::Print (_L ("Exiting CCentralRepositoryHandler::ConvertStringToChannelPIL")); - return tempPI; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::ConvertStringToChannelFavouriteL -// Get the channel favourite flag from the externalized stream -// Returns: tempFav: the channel favourite flag -// ?value_n: ?description -// ?description -// ---------------------------------------------------- -// -TBool CCentralRepositoryHandler::ConvertStringToChannelFavouriteL( - const TDesC8& aString) const // a reference to the raw string - { -RDebug::Print (_L ("Entering CCentralRepositoryHandler::ConvertStringToChannelFavouriteL")); - TBool tempFav = EFalse; - TPresetChannel tempPresetChannel; - RDesReadStream inStream; - inStream.Open(aString); - CleanupClosePushL(inStream); - tempPresetChannel.InternalizeL(inStream); - CleanupStack::PopAndDestroy(&inStream); - tempFav = tempPresetChannel.ChannelFavouriteInfo(); -RDebug::Print (_L ("Exiting CCentralRepositoryHandler::ConvertStringToChannelFavouriteL")); - return tempFav; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::ConvertStringToChannelUserRenameL -// Get the channel user rename flag from the externalized stream -// Returns: tempRen: the channel favourite flag -// ?value_n: ?description -// ?description -// ---------------------------------------------------- -// -TBool CCentralRepositoryHandler::ConvertStringToChannelUserRenameL( - const TDesC8& aString) const // a reference to the raw string - { -RDebug::Print (_L ("Entering CCentralRepositoryHandler::ConvertStringToChannelUserRenameL")); - TBool tempRen = EFalse; - TPresetChannel tempPresetChannel; - RDesReadStream inStream; - inStream.Open(aString); - CleanupClosePushL(inStream); - tempPresetChannel.InternalizeL(inStream); - CleanupStack::PopAndDestroy(&inStream); - tempRen = tempPresetChannel.ChannelUserRenameInfo(); -RDebug::Print (_L ("Exiting CCentralRepositoryHandler::ConvertStringToChannelUserRenameL")); - return tempRen; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::UpdateChannelObjectWithPIL -// Update the current preset channel's PI code -// Returns: none -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::UpdateChannelObjectWithPIL ( - TInt aIndex, //the channel index - TPresetChannel& aPresetChannel, // reference to channel object - TUint aPI) // new frequency - { - //Initialize the channel object with correct information. - GetPresetL( aIndex, aPresetChannel ); - aPresetChannel.SetChannelPI(aPI); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::UpdateChannelObjectWithPTYL -// Update the current preset channel's PTY code -// Returns: none -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::UpdateChannelObjectWithPTYL ( - TInt aIndex, //the channel index - TPresetChannel& aPresetChannel, // reference to channel object - TUint aPTY) // new PTY - { - //Initialize the channel object with correct information. - GetPresetL( aIndex, aPresetChannel ); - aPresetChannel.SetChannelPty(aPTY); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::UpdateChannelObjectWithFavouriteInfoL -// Update the current preset channel's favourite status -// Returns: none -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::UpdateChannelObjectWithFavouriteInfoL ( - TInt aIndex, //the channel index - TPresetChannel& aPresetChannel, // reference to channel object - TBool aFav) // new favourite info - { - GetPresetL(aIndex, aPresetChannel); - aPresetChannel.SetChannelFavouriteInfo(aFav); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::UpdateChannelObjectWithUserRenameInfoL -// Update the current preset channel's user rename status -// Returns: none -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::UpdateChannelObjectWithUserRenameInfoL ( - TInt aIndex, //the channel index - TPresetChannel& aPresetChannel, // reference to channel object - TBool aUR) // new user rename info - { - //Initialize the channel object with correct information. - GetPresetL( aIndex, aPresetChannel ); - aPresetChannel.SetChannelUserRenameInfo(aUR); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::DeletePresetL -// Delete the current preset -// Returns: none -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::DeletePresetL(TInt aIndex) - { - - if ( 0 > aIndex ) - { //Delete all presets - for(TInt i = 0;iDelete( CalculateNameIndexL( i ) ); - iCentralRepository->Delete( CalculateFrequencyIndexL( i ) ); - iCentralRepository->Delete( CalculateUrlIndexL( i ) ); - iCentralRepository->Delete( CalculateRestOfParametersIndexL( i ) ); - } - } - else - { - iCentralRepository->Delete( CalculateNameIndexL( aIndex ) ); - iCentralRepository->Delete( CalculateFrequencyIndexL( aIndex ) ); - iCentralRepository->Delete( CalculateUrlIndexL( aIndex ) ); - iCentralRepository->Delete( CalculateRestOfParametersIndexL( aIndex ) ); - } - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::GetNumberOfPresets -// Get the current number of presets -// Returns: number of valid presets in cenrep -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::GetNumberOfPresetsL(TInt& aNum) - { - TInt count = 0; - const TInt KMinAcceptableRadioFrequency = 76000000; - const TInt KMaxAcceptableRadioFrequency = 108000000; - TInt err( KErrNone ); - TInt frequencyIndex( 0 ); - TInt frequency( 0 ); - - for(TInt index = 0;index < KMaxNumberOfPresetStations;index++) - { - frequencyIndex = CalculateFrequencyIndexL( index ); - err = iCentralRepository->Get( frequencyIndex, frequency ); - if(KErrNone == err ) - { - //Check validity of preset entries - if ( ( KMinAcceptableRadioFrequency <= frequency ) && ( KMaxAcceptableRadioFrequency > frequency ) ) - { - count++; - if(count == 1) - { - iFirstPreset = index; - } - } - } - } - aNum = count; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::GetFirstPreset -// Gets the first preset -// Returns: none -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::GetFirstPresetL(TInt& aNum) - { - TInt count = 0; - iFirstPreset = 0; - - GetNumberOfPresetsL(count); //this updates iFirstPreset - - if(count) - { - aNum = iFirstPreset; - } - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::GetNextPreset -// Get the next preset index that has been set, -// given the current index -// Returns: none -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::GetNextPresetL(TInt aIndex,TInt& aNextIndex) - { - TInt next = 0; - TInt err( KErrNone ); - TInt frequencyIndex( 0 ); - TInt frequency( 0 ); - //start search on next one - aIndex = aIndex + 1; - for(TInt index = aIndex ;index < KMaxNumberOfPresetStations;index++) - { - frequencyIndex = CalculateFrequencyIndexL( index ); - err = iCentralRepository->Get( frequencyIndex, frequency ); - if( KErrNone == err && frequency != KErrNotFound ) - { - next = index; - break; - } - } - aNextIndex = next; - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::ExternalizeToStream -// Externalize the string in the aBuffer -// Returns: none -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::ExternalizeToStreamL( - const TPresetChannel& aPresetChannel, // reference to channel object - TDes8& aBuffer) // buffer for externalize stream - { - RDesWriteStream outStream(aBuffer); - CleanupClosePushL(outStream); - aPresetChannel.ExternalizeL(outStream); - outStream.CommitL(); - CleanupStack::PopAndDestroy(&outStream); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::InternalizeFromStream -// Internalize a preset from string -// Returns: none -// ---------------------------------------------------- -// -void CCentralRepositoryHandler::InternalizeFromStreamL( - TPresetChannel& aPresetChannel, // reference to channel object - TDes8& aBuffer) // buffer for externalize stream - { - RDesReadStream inStream(aBuffer); - CleanupClosePushL(inStream); - aPresetChannel.InternalizeL(inStream); - CleanupStack::PopAndDestroy(&inStream); - } - -// ---------------------------------------------------- -// CCentralRepositoryHandler::GetPreset -// Returns: KErrNone if no errors, otherwise system errors. -// ---------------------------------------------------- -// -TInt CCentralRepositoryHandler::GetPresetL(TInt aIndex, TPresetChannel& aPreset) - { - TInt ret = KErrNotFound; - // Read name from its own key in the key sequence - TInt nameIndex( CalculateNameIndexL( aIndex ) ); - TFmPresetName tempChannelName; - HBufC* nameBuf = HBufC::NewLC( tempChannelName.MaxSize() ); - TPtr nameBufPtr = nameBuf->Des(); - ret = iCentralRepository->Get(nameIndex, nameBufPtr ); - if( KErrNone == ret ) - { - if (nameBufPtr.Length() != 0) - { - tempChannelName.Copy( nameBufPtr ); - } - aPreset.SetChannelName( tempChannelName ); - } - else - { - User::Leave( ret ); - } - CleanupStack::PopAndDestroy(nameBuf); - - // Read frequency from its own key in the key sequence - TInt frequency( 0 ); - User::LeaveIfError( iCentralRepository->Get( CalculateFrequencyIndexL( aIndex ), frequency ) ); - aPreset.SaveChannelFrequency( frequency ); - - // Read url from its own key in the key sequence - TInt urlIndex( CalculateUrlIndexL( aIndex ) ); - TFmPresetUrl tempUrlName; - HBufC* urlBuf = HBufC::NewLC( tempUrlName.MaxSize() ); - TPtr urlBufPtr = urlBuf->Des(); - ret = iCentralRepository->Get(urlIndex, urlBufPtr ); - if ( KErrNone == ret ) - { - if (urlBufPtr.Length() != 0) - { - tempUrlName.Copy( urlBufPtr ); - } - aPreset.SetChannelUrl( tempUrlName ); - } - else if ( KErrNotFound == ret ) - { - // This is an optional parameter. - } - else - { - User::Leave( ret ); - } - CleanupStack::PopAndDestroy(urlBuf); - - - HBufC8* buf = HBufC8::NewLC( sizeof(TPresetChannel) ); - TPtr8 bufPtr = buf->Des(); - TInt restOfParametersIndex( CalculateRestOfParametersIndexL( aIndex ) ); - if(KErrNone == iCentralRepository->Get(restOfParametersIndex, bufPtr )) - { - if (bufPtr.Length() != 0) - { - TRAPD(err, InternalizeFromStreamL( aPreset, bufPtr );) - ret = err; - } - } - CleanupStack::PopAndDestroy(buf); - return ret; - } - -// end of file