diff -r 1a6714c53019 -r cce62ebc198e radioapp/radiopresetstorage/src/radiopresetstorage.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/radioapp/radiopresetstorage/src/radiopresetstorage.cpp Tue Aug 31 15:15:02 2010 +0300 @@ -0,0 +1,185 @@ +/* +* Copyright (c) 2009 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: +* +*/ + +// System includes +#include +#include +#include + +// User includes +#include "radiopresetstorage.h" +#include "radiopresetstorage_p.h" +#include "radiostationif.h" + +/*! + * Converts a symbian descriptor to Qt string + */ +static QString convertString( const TDesC& aDesc ) +{ + return QString::fromUtf16( aDesc.Ptr(), aDesc.Length() ); +} + +/*! + * + */ +RadioPresetStorage::RadioPresetStorage() : + d_ptr( new RadioPresetStoragePrivate() ) +{ + Q_D( RadioPresetStorage ); + d->init(); +} + +/*! + * + */ +RadioPresetStorage::~RadioPresetStorage() +{ +} + +/*! + * + */ +int RadioPresetStorage::maxNumberOfPresets() const +{ + Q_D( const RadioPresetStorage ); + return d->mPresetUtility->MaxNumberOfPresets(); +} + +/*! + * + */ +int RadioPresetStorage::presetCount() const +{ + Q_D( const RadioPresetStorage ); + return d->mPresetUtility->PresetCount(); +} + +/*! + * + */ +int RadioPresetStorage::firstPreset() const +{ + Q_D( const RadioPresetStorage ); + return d->mPresetUtility->FirstPreset(); +} + +/*! + * + */ +int RadioPresetStorage::nextPreset( int fromIndex ) const +{ + Q_D( const RadioPresetStorage ); + return d->mPresetUtility->NextPreset( fromIndex ); +} + +/*! + * + */ +bool RadioPresetStorage::deletePreset( int presetIndex ) +{ + Q_D( RadioPresetStorage ); + return d->mPresetUtility->DeletePreset( presetIndex ) == KErrNone; +} + +/*! + * + */ +bool RadioPresetStorage::savePreset( const RadioStationIf& station ) +{ + Q_D( RadioPresetStorage ); + TPreset preset; + preset.SetFrequency( station.frequency() ); + TPresetName name( station.name().left( KPresetNameLength ).utf16() ); + preset.SetName( name ); + preset.SetRenamedByUser( station.isRenamedByUser() ); + preset.SetGenre( station.genre() ); + TRadioUrl url( station.url().left( KUrlMaxLength ).utf16() ); + preset.SetUrl( url ); + preset.SetPiCode( station.piCode() ); + preset.SetFavorite( station.isFavorite() ); + preset.SetLocalStation( station.isLocalStation() ); + + TRAPD( err, d->mPresetUtility->SavePresetL( preset, station.presetIndex() ) ); + return err == KErrNone; +} + +/*! + * + */ +bool RadioPresetStorage::readPreset( int index, RadioStationIf& station ) +{ + Q_D( RadioPresetStorage ); + TPreset preset; + TRAPD( err, d->mPresetUtility->ReadPresetL( index, preset ) ); + if ( !err ) { + + station.setPresetIndex( index ); + station.setFrequency( preset.Frequency() ); + station.setName( convertString( preset.Name() ) ); + station.setRenamedByUser( preset.RenamedByUser() ); + station.setGenre( preset.Genre() ); + station.setUrl( convertString( preset.Url() ) ); + station.setPiCode( preset.PiCode() ); + station.setFavorite( preset.Favorite() ); + station.setLocalStation( preset.LocalStation() ); + + return true; + } + return false; +} + +/*! + * + */ +void RadioPresetStorage::readFrequencies( QList& frequencyList ) +{ + Q_D( RadioPresetStorage ); + + TPreset preset; + int index = firstPreset(); + while ( index >= 0 ) { + TRAPD( err, d->mPresetUtility->ReadPresetL( index, preset ) ); + if ( !err ) { + frequencyList.append( preset.Frequency() ); + } + + index = nextPreset( index ); + } +} + +/*! + * + */ +RadioPresetStoragePrivate::RadioPresetStoragePrivate() +{ +} + +/*! + * + */ +RadioPresetStoragePrivate::~RadioPresetStoragePrivate() +{ +} + +/*! + * + */ +bool RadioPresetStoragePrivate::init() +{ + TRAPD( err, mPresetUtility.reset( CPresetUtility::NewL() ) ); + return err == KErrNone; +}