--- a/mmserv/radioutility/fmpresetutility/src/RadioFmPresetCentralRepositoryHandler.cpp Tue Feb 02 01:08:46 2010 +0200
+++ /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 <centralrepository.h>
-#include "RadioFmPresetCRKeys.h"
-#include "RadioFmPresetUtilityBody.h"
-#include "debug.h"
-#include <s32mem.h>
-
-
-// ============= 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;i<KMaxNumberOfPresetStations;i++)
- {
- iCentralRepository->Delete( 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