201041 default
authorhgs
Fri, 15 Oct 2010 16:26:27 +0300
changeset 57 21be958eb3ce
parent 56 04837bf3a628
201041
common/radio_global.h
radioapp/bwins/fmradiouiengineu.def
radioapp/bwins/fmradiowidgetsu.def
radioapp/eabi/fmradiouiengineu.def
radioapp/eabi/fmradiowidgetsu.def
radioapp/radioapplication/inc/radioapplication.h
radioapp/radioapplication/inc/testwindow_win32.h
radioapp/radioapplication/src/testwindow_win32.cpp
radioapp/radioapplication/win32_stubs/qsysteminfo.h
radioapp/radioapplication/win32_stubs/xqserviceprovider.h
radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h
radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp
radioapp/radioenginewrapper/src/t_radiodataparser.cpp
radioapp/radiouiengine/inc/radiocontrolservice.h
radioapp/radiouiengine/inc/radiohistorymodel.h
radioapp/radiouiengine/inc/radiohistorymodel_p.h
radioapp/radiouiengine/inc/radiomonitorservice.h
radioapp/radiouiengine/inc/radioscannerengine.h
radioapp/radiouiengine/inc/radiostation.h
radioapp/radiouiengine/inc/radiostationmodel.h
radioapp/radiouiengine/inc/radiostationmodel_p.h
radioapp/radiouiengine/inc/radiotimerpool.h
radioapp/radiouiengine/inc/radiouiengine.h
radioapp/radiouiengine/inc/radiouiengine_p.h
radioapp/radiouiengine/radiouiengine.pro
radioapp/radiouiengine/src/radiohistorydatabase.cpp
radioapp/radiouiengine/src/radiohistoryitem.cpp
radioapp/radiouiengine/src/radiohistorymodel.cpp
radioapp/radiouiengine/src/radiohistorymodel_p.cpp
radioapp/radiouiengine/src/radiomonitorservice.cpp
radioapp/radiouiengine/src/radiostation.cpp
radioapp/radiouiengine/src/radiostationmodel.cpp
radioapp/radiouiengine/src/radiostationmodel_p.cpp
radioapp/radiouiengine/src/radiotimerpool.cpp
radioapp/radiouiengine/src/radiouiengine.cpp
radioapp/radiouiengine/src/radiouiengine_p.cpp
radioapp/radiowidgets/inc/radiocarouselanimator.h
radioapp/radiowidgets/inc/radiocarouselitem.h
radioapp/radiowidgets/inc/radiocarouselitemobserver.h
radioapp/radiowidgets/inc/radiofadinglabel.h
radioapp/radiowidgets/inc/radiofrequencyscanner.h
radioapp/radiowidgets/inc/radiofrequencystrip.h
radioapp/radiowidgets/inc/radiofrequencystripbase.h
radioapp/radiowidgets/inc/radiofrequencystripdef.h
radioapp/radiowidgets/inc/radiohistoryview.h
radioapp/radiowidgets/inc/radiomainview.h
radioapp/radiowidgets/inc/radiostationcarousel.h
radioapp/radiowidgets/inc/radiostationsview.h
radioapp/radiowidgets/inc/radioviewbase.h
radioapp/radiowidgets/inc/radiowindow.h
radioapp/radiowidgets/radiowidgets.pro
radioapp/radiowidgets/src/radiocarouselitem.cpp
radioapp/radiowidgets/src/radiofrequencyscanner.cpp
radioapp/radiowidgets/src/radiofrequencystrip.cpp
radioapp/radiowidgets/src/radiofrequencystripbase.cpp
radioapp/radiowidgets/src/radiohistoryview.cpp
radioapp/radiowidgets/src/radiomainview.cpp
radioapp/radiowidgets/src/radiostationcarousel.cpp
radioapp/radiowidgets/src/radiostationsview.cpp
radioapp/radiowidgets/src/radiostripbase.cpp
radioapp/radiowidgets/src/radioutil.cpp
radioengine/engine/src/cradioengineimp.cpp
radioengine/engine/stub/bwins/fmradioengine_stubu.def
radioengine/engine/stub/eabi/fmradioengine_stubu.def
radioengine/settings/src/cradioregion.cpp
radioengine/utils/api/cradioaudiorouter.h
radioengine/utils/api/cradioroutableaudio.h
radioengine/utils/api/cradiosystemeventcollector.h
radioengine/utils/src/cradioaccessoryobserver.cpp
radioengine/utils/src/cradioaudiorouter.cpp
radioengine/utils/src/cradioremcontargetimp.cpp
radioengine/utils/src/cradioroutableaudio.cpp
radioengine/utils/src/cradiosystemeventcollectorimp.cpp
radioengine/utils/stub/inc/cradioaccessoryobserver_stub.h
radioengine/utils/stub/src/cradioaccessoryobserver_stub.cpp
radioengine/utils/stub/src/cradioremcontargetimp_stub.cpp
radioengine/utils/tsrc/bwins/UtilsTestModuleu.def
radioengine/utils/tsrc/conf/UtilsTestModule.cfg
radioengine/utils/tsrc/conf/atsconf.txt
radioengine/utils/tsrc/custom/postrun_custom.xml
radioengine/utils/tsrc/custom/prerun_custom.xml
radioengine/utils/tsrc/eabi/UtilsTestModuleu.def
radioengine/utils/tsrc/group/RestoreOrigCenrep.cmd
radioengine/utils/tsrc/group/TestEnvInit.cmd
radioengine/utils/tsrc/group/UtilsTestModule.mmp
radioengine/utils/tsrc/group/UtilsTestModule.pkg
radioengine/utils/tsrc/group/UtilsTestModule_DoxyFile.txt
radioengine/utils/tsrc/group/UtilsTestModule_nrm.mmp
radioengine/utils/tsrc/group/bld.inf
radioengine/utils/tsrc/inc/UtilsTestModule.h
radioengine/utils/tsrc/inc/trace.h
radioengine/utils/tsrc/inc/traceconfiguration.hrh
radioengine/utils/tsrc/init/TestFramework.ini
radioengine/utils/tsrc/rom/utilstestmodule.iby
radioengine/utils/tsrc/src/UtilsTestModule.cpp
radioengine/utils/tsrc/src/UtilsTestModuleBlocks.cpp
radiohswidget/inc/radiohswidget.h
radiohswidget/resource/fmradiohswidget.docml
radiohswidget/src/radiohswidget.cpp
sis/create_and_sign_sis.bat
sis/create_data_sis.bat
sis/create_tester_sis.bat
sis/create_ui_udeb_sis.bat
sis/create_ui_urel_sis.bat
sis/errrd
sis/errrd.pkg
sis/fmradio-tester.pkg
sis/fmradio-udeb.pkg
sis/fmradio-urel.pkg
sis/nokia_rndcert_02.der
sis/nokia_rndcert_02.key
sis/preinitialized_data/10207b87.cre
sis/preinitialized_data/radioplayhistory.db
sis/radio_data.pkg
sis/radioenginecenrep.pkg
--- a/common/radio_global.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/common/radio_global.h	Fri Oct 15 16:26:27 2010 +0300
@@ -41,6 +41,8 @@
 
 const int VOLUME_STEP_DIVIDER = 500;
 
+const int MAX_STATION_NAME_LENGTH = 64;
+
 /**
  * UIDs for checking the offline mode
  * Values copied from CoreApplicationUIsSDKCRKeys.h
@@ -69,6 +71,7 @@
 {
     enum Tag
     {
+        Unknown = -1, // Not an official tag
         Dummy = 0,
         Title = 1,
         Artist = 4,
@@ -109,7 +112,8 @@
     {
         NotScanning,
         ScanningInMainView,
-        ScanningInStationsView
+        ScanningInStationsView,
+        SeekingInMainView
     };
 }
 
--- a/radioapp/bwins/fmradiouiengineu.def	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/bwins/fmradiouiengineu.def	Fri Oct 15 16:26:27 2010 +0300
@@ -1,258 +1,262 @@
 EXPORTS
-	?tr@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 1 NONAME ; class QString RadioUiEngine::tr(char const *, char const *)
-	?setFrequency@RadioHistoryItem@@QAEXI@Z @ 2 NONAME ; void RadioHistoryItem::setFrequency(unsigned int)
-	?currentStation@RadioStationModel@@QBEABVRadioStation@@XZ @ 3 NONAME ; class RadioStation const & RadioStationModel::currentStation(void) const
-	?rowCount@RadioHistoryModel@@UBEHABVQModelIndex@@@Z @ 4 NONAME ; int RadioHistoryModel::rowCount(class QModelIndex const &) const
-	?contains@RadioStationModel@@QBE_NI@Z @ 5 NONAME ; bool RadioStationModel::contains(unsigned int) const
-	?qt_metacast@RadioUiEngine@@UAEPAXPBD@Z @ 6 NONAME ; void * RadioUiEngine::qt_metacast(char const *)
-	?parseFrequency@RadioStation@@SA?AVQString@@I@Z @ 7 NONAME ; class QString RadioStation::parseFrequency(unsigned int)
-	??0RadioStation@@QAE@ABV0@@Z @ 8 NONAME ; RadioStation::RadioStation(class RadioStation const &)
-	?region@RadioUiEngine@@QBE?AW4Region@RadioRegion@@XZ @ 9 NONAME ; enum RadioRegion::Region RadioUiEngine::region(void) const
-	?frequency@RadioStation@@QBEIXZ @ 10 NONAME ; unsigned int RadioStation::frequency(void) const
-	?setFavoriteByFrequency@RadioStationModel@@QAEXI_N@Z @ 11 NONAME ; void RadioStationModel::setFavoriteByFrequency(unsigned int, bool)
-	?isInitialized@RadioUiEngine@@QBE_NXZ @ 12 NONAME ; bool RadioUiEngine::isInitialized(void) const
-	?staticMetaObject@RadioUiEngine@@2UQMetaObject@@B @ 13 NONAME ; struct QMetaObject const RadioUiEngine::staticMetaObject
-	?indexFromFrequency@RadioStationModel@@QAEHI@Z @ 14 NONAME ; int RadioStationModel::indexFromFrequency(unsigned int)
-	?stationsInRange@RadioStationModel@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 15 NONAME ; class QList<class RadioStation> RadioStationModel::stationsInRange(unsigned int, unsigned int)
-	?settings@RadioUiEngine@@QAEAAVRadioSettingsIf@@XZ @ 16 NONAME ; class RadioSettingsIf & RadioUiEngine::settings(void)
-	?emitAntennaStatusChanged@RadioUiEngine@@AAEX_N@Z @ 17 NONAME ; void RadioUiEngine::emitAntennaStatusChanged(bool)
-	?hasPiCode@RadioStation@@QBE_NXZ @ 18 NONAME ; bool RadioStation::hasPiCode(void) const
-	??_ERadioScannerEngine@@UAE@I@Z @ 19 NONAME ; RadioScannerEngine::~RadioScannerEngine(unsigned int)
-	?setFavoriteByPreset@RadioStationModel@@QAEXH_N@Z @ 20 NONAME ; void RadioStationModel::setFavoriteByPreset(int, bool)
-	?rdsAvailabilityChanged@RadioUiEngine@@IAEX_N@Z @ 21 NONAME ; void RadioUiEngine::rdsAvailabilityChanged(bool)
-	?findPresetIndex@RadioStationModel@@QAEHHAAVRadioStation@@@Z @ 22 NONAME ; int RadioStationModel::findPresetIndex(int, class RadioStation &)
-	?stationHandlerIf@RadioStationModel@@QAEAAVRadioStationHandlerIf@@XZ @ 23 NONAME ; class RadioStationHandlerIf & RadioStationModel::stationHandlerIf(void)
-	?qt_metacall@RadioHistoryModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 24 NONAME ; int RadioHistoryModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?frequencyString@RadioStation@@QBE?AVQString@@XZ @ 25 NONAME ; class QString RadioStation::frequencyString(void) const
-	?emitVolumeChanged@RadioUiEngine@@AAEXH@Z @ 26 NONAME ; void RadioUiEngine::emitVolumeChanged(int)
-	?qt_metacall@RadioUiEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 27 NONAME ; int RadioUiEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?reset@RadioStation@@AAEXXZ @ 28 NONAME ; void RadioStation::reset(void)
-	?createScannerEngine@RadioUiEngine@@QAE?AV?$QSharedPointer@VRadioScannerEngine@@@@XZ @ 29 NONAME ; class QSharedPointer<class RadioScannerEngine> RadioUiEngine::createScannerEngine(void)
-	?emitAudioRouteChanged@RadioUiEngine@@AAEX_N@Z @ 30 NONAME ; void RadioUiEngine::emitAudioRouteChanged(bool)
-	?addItem@RadioHistoryModel@@AAEXABVQString@@0ABVRadioStation@@@Z @ 31 NONAME ; void RadioHistoryModel::addItem(class QString const &, class QString const &, class RadioStation const &)
-	?d_func@RadioScannerEngine@@ABEPBVRadioScannerEnginePrivate@@XZ @ 32 NONAME ; class RadioScannerEnginePrivate const * RadioScannerEngine::d_func(void) const
-	??4RadioStation@@QAEAAV0@ABV0@@Z @ 33 NONAME ; class RadioStation & RadioStation::operator=(class RadioStation const &)
-	?toggleAudioRoute@RadioUiEngine@@QAEXXZ @ 34 NONAME ; void RadioUiEngine::toggleAudioRoute(void)
-	?stationModel@RadioUiEngine@@QAEAAVRadioStationModel@@XZ @ 35 NONAME ; class RadioStationModel & RadioUiEngine::stationModel(void)
-	?unsetType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 36 NONAME ; void RadioStation::unsetType(class QFlags<enum RadioStation::TypeFlag>)
-	?toggleTagging@RadioHistoryModel@@QAEXABVRadioHistoryItem@@H@Z @ 37 NONAME ; void RadioHistoryModel::toggleTagging(class RadioHistoryItem const &, int)
-	?muteChanged@RadioUiEngine@@IAEX_N@Z @ 38 NONAME ; void RadioUiEngine::muteChanged(bool)
-	?maxFrequency@RadioUiEngine@@QBEIXZ @ 39 NONAME ; unsigned int RadioUiEngine::maxFrequency(void) const
-	?saveStation@RadioStationModel@@QAEXAAVRadioStation@@@Z @ 40 NONAME ; void RadioStationModel::saveStation(class RadioStation &)
-	?getStaticMetaObject@RadioHistoryModel@@SAABUQMetaObject@@XZ @ 41 NONAME ; struct QMetaObject const & RadioHistoryModel::getStaticMetaObject(void)
-	?findUnusedPresetIndex@RadioStationModel@@AAEHXZ @ 42 NONAME ; int RadioStationModel::findUnusedPresetIndex(void)
-	?hasChanged@RadioStation@@QBE_NXZ @ 43 NONAME ; bool RadioStation::hasChanged(void) const
-	?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 44 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *, int)
-	?isScanning@RadioUiEngine@@QBE_NXZ @ 45 NONAME ; bool RadioUiEngine::isScanning(void) const
-	?dynamicPsCheckEnded@RadioStationModel@@AAEXXZ @ 46 NONAME ; void RadioStationModel::dynamicPsCheckEnded(void)
-	?d_func@RadioHistoryModel@@AAEPAVRadioHistoryModelPrivate@@XZ @ 47 NONAME ; class RadioHistoryModelPrivate * RadioHistoryModel::d_func(void)
-	?skipStation@RadioUiEngine@@QAEIW4Mode@StationSkip@@IH@Z @ 48 NONAME ; unsigned int RadioUiEngine::skipStation(enum StationSkip::Mode, unsigned int, int)
-	?setFrequency@RadioStation@@AAEXI@Z @ 49 NONAME ; void RadioStation::setFrequency(unsigned int)
-	?piCodeToCallSign@RadioStation@@AAE?AVQString@@I@Z @ 50 NONAME ; class QString RadioStation::piCodeToCallSign(unsigned int)
-	?seekStation@RadioUiEngine@@QAEXH@Z @ 51 NONAME ; void RadioUiEngine::seekStation(int)
-	?favoriteChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 52 NONAME ; void RadioStationModel::favoriteChanged(class RadioStation const &)
-	?radioStatusChanged@RadioUiEngine@@IAEX_N@Z @ 53 NONAME ; void RadioUiEngine::radioStatusChanged(bool)
-	?setIcons@RadioHistoryModel@@QAEXABVQIcon@@0@Z @ 54 NONAME ; void RadioHistoryModel::setIcons(class QIcon const &, class QIcon const &)
-	?isCurrentSongRecognized@RadioHistoryModel@@QBE_NXZ @ 55 NONAME ; bool RadioHistoryModel::isCurrentSongRecognized(void) const
-	?addStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 56 NONAME ; void RadioStationModel::addStation(class RadioStation const &)
-	?clearRadioTextPlus@RadioHistoryModel@@AAEXXZ @ 57 NONAME ; void RadioHistoryModel::clearRadioTextPlus(void)
-	?favoriteCount@RadioStationModel@@QAEHXZ @ 58 NONAME ; int RadioStationModel::favoriteCount(void)
-	??1RadioScannerEngine@@UAE@XZ @ 59 NONAME ; RadioScannerEngine::~RadioScannerEngine(void)
-	?tunedToFrequency@RadioUiEngine@@IAEXIH@Z @ 60 NONAME ; void RadioUiEngine::tunedToFrequency(unsigned int, int)
-	?tr@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 61 NONAME ; class QString RadioUiEngine::tr(char const *, char const *, int)
-	?launchBrowser@RadioUiEngine@@QAEXABVQString@@@Z @ 62 NONAME ; void RadioUiEngine::launchBrowser(class QString const &)
-	?isScanning@RadioScannerEngine@@QBE_NXZ @ 63 NONAME ; bool RadioScannerEngine::isScanning(void) const
-	??1RadioHistoryItem@@QAE@XZ @ 64 NONAME ; RadioHistoryItem::~RadioHistoryItem(void)
-	?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 65 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *)
-	?hasName@RadioStation@@QBE_NXZ @ 66 NONAME ; bool RadioStation::hasName(void) const
-	?emitDataChanged@RadioStationModel@@AAEXABVRadioStation@@@Z @ 67 NONAME ; void RadioStationModel::emitDataChanged(class RadioStation const &)
-	?setPowerOff@RadioUiEngine@@QAEXH@Z @ 68 NONAME ; void RadioUiEngine::setPowerOff(int)
-	?isRadioOn@RadioUiEngine@@QBE_NXZ @ 69 NONAME ; bool RadioUiEngine::isRadioOn(void) const
-	?continueScanning@RadioScannerEngine@@QAEXXZ @ 70 NONAME ; void RadioScannerEngine::continueScanning(void)
-	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 71 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *, int)
-	?removeByModelIndices@RadioHistoryModel@@QAEXAAV?$QList@VQModelIndex@@@@_N@Z @ 72 NONAME ; void RadioHistoryModel::removeByModelIndices(class QList<class QModelIndex> &, bool)
-	?localCount@RadioStationModel@@QAEHXZ @ 73 NONAME ; int RadioStationModel::localCount(void)
-	?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 74 NONAME ; class QMap<unsigned int, class RadioStation> const & RadioStationModel::list(void) const
-	?tr@RadioStationModel@@SA?AVQString@@PBD0@Z @ 75 NONAME ; class QString RadioStationModel::tr(char const *, char const *)
-	?findClosest@RadioStationModel@@QAE?AVRadioStation@@IW4Mode@StationSkip@@@Z @ 76 NONAME ; class RadioStation RadioStationModel::findClosest(unsigned int, enum StationSkip::Mode)
-	?flags@RadioStationModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 77 NONAME ; class QFlags<enum Qt::ItemFlag> RadioStationModel::flags(class QModelIndex const &) const
-	?launchRadioServer@RadioUiEngine@@SAXXZ @ 78 NONAME ; void RadioUiEngine::launchRadioServer(void)
-	?staticMetaObject@RadioScannerEngine@@2UQMetaObject@@B @ 79 NONAME ; struct QMetaObject const RadioScannerEngine::staticMetaObject
-	?id@RadioHistoryItem@@QBEHXZ @ 80 NONAME ; int RadioHistoryItem::id(void) const
-	?stationsInRange@RadioUiEngine@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 81 NONAME ; class QList<class RadioStation> RadioUiEngine::stationsInRange(unsigned int, unsigned int)
-	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 82 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *)
-	?tr@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 83 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *, int)
-	?setPiCode@RadioStation@@AAE_NHW4Region@RadioRegion@@@Z @ 84 NONAME ; bool RadioStation::setPiCode(int, enum RadioRegion::Region)
-	?data_ptr@RadioHistoryItem@@QAEAAV?$QSharedDataPointer@VRadioHistoryItemPrivate@@@@XZ @ 85 NONAME ; class QSharedDataPointer<class RadioHistoryItemPrivate> & RadioHistoryItem::data_ptr(void)
-	?radioText@RadioStation@@QBE?AVQString@@XZ @ 86 NONAME ; class QString RadioStation::radioText(void) const
-	?setData@RadioStationModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 87 NONAME ; bool RadioStationModel::setData(class QModelIndex const &, class QVariant const &, int)
-	?lastVolume@RadioUiEngine@@SAHXZ @ 88 NONAME ; int RadioUiEngine::lastVolume(void)
-	?isInManualSeekMode@RadioUiEngine@@QBE_NXZ @ 89 NONAME ; bool RadioUiEngine::isInManualSeekMode(void) const
-	?itemAtIndex@RadioHistoryModel@@QBE?AVRadioHistoryItem@@ABVQModelIndex@@@Z @ 90 NONAME ; class RadioHistoryItem RadioHistoryModel::itemAtIndex(class QModelIndex const &) const
-	?setVolume@RadioUiEngine@@QAEXH@Z @ 91 NONAME ; void RadioUiEngine::setVolume(int)
-	?setFavorite@RadioStation@@QAEX_N@Z @ 92 NONAME ; void RadioStation::setFavorite(bool)
-	?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 93 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const
-	?emitChangeSignals@RadioStationModel@@AAEXABVRadioStation@@V?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 94 NONAME ; void RadioStationModel::emitChangeSignals(class RadioStation const &, class QFlags<enum RadioStation::ChangeFlag>)
-	?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 95 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int)
-	?hasUrl@RadioStation@@QBE_NXZ @ 96 NONAME ; bool RadioStation::hasUrl(void) const
-	??1RadioStationModel@@UAE@XZ @ 97 NONAME ; RadioStationModel::~RadioStationModel(void)
-	?isMuted@RadioUiEngine@@QBE_NXZ @ 98 NONAME ; bool RadioUiEngine::isMuted(void) const
-	?renameStation@RadioStationModel@@QAEXHABVQString@@@Z @ 99 NONAME ; void RadioStationModel::renameStation(int, class QString const &)
-	?currentFrequency@RadioUiEngine@@QBEIXZ @ 100 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const
-	?emitItemAdded@RadioHistoryModel@@AAEXXZ @ 101 NONAME ; void RadioHistoryModel::emitItemAdded(void)
-	?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 102 NONAME ; void RadioStation::setUserDefinedName(class QString const &)
-	?setUrl@RadioStation@@AAEXABVQString@@@Z @ 103 NONAME ; void RadioStation::setUrl(class QString const &)
-	?hasDynamicPs@RadioStation@@QBE_NXZ @ 104 NONAME ; bool RadioStation::hasDynamicPs(void) const
-	??1RadioStation@@UAE@XZ @ 105 NONAME ; RadioStation::~RadioStation(void)
-	?getStaticMetaObject@RadioScannerEngine@@SAABUQMetaObject@@XZ @ 106 NONAME ; struct QMetaObject const & RadioScannerEngine::getStaticMetaObject(void)
-	?callSignString@RadioStation@@AAE?AVQString@@I@Z @ 107 NONAME ; class QString RadioStation::callSignString(unsigned int)
-	?isValid@RadioStation@@QBE_NXZ @ 108 NONAME ; bool RadioStation::isValid(void) const
-	?data_ptr@RadioStation@@QAEAAV?$QSharedDataPointer@VRadioStationPrivate@@@@XZ @ 109 NONAME ; class QSharedDataPointer<class RadioStationPrivate> & RadioStation::data_ptr(void)
-	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 110 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *, int)
-	?reset@RadioHistoryItem@@QAEXXZ @ 111 NONAME ; void RadioHistoryItem::reset(void)
-	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 112 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *)
-	?setRadioTextPlus@RadioStation@@AAEXHABVQString@@@Z @ 113 NONAME ; void RadioStation::setRadioTextPlus(int, class QString const &)
-	?setChangeFlags@RadioStation@@AAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 114 NONAME ; void RadioStation::setChangeFlags(class QFlags<enum RadioStation::ChangeFlag>)
-	??0RadioStationModel@@QAE@AAVRadioUiEnginePrivate@@@Z @ 115 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEnginePrivate &)
-	?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 116 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &)
-	?frequency@RadioHistoryItem@@QBEIXZ @ 117 NONAME ; unsigned int RadioHistoryItem::frequency(void) const
-	?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 118 NONAME ; class RadioStation & RadioStationModel::currentStation(void)
-	?isDetached@RadioHistoryItem@@QBE_NXZ @ 119 NONAME ; bool RadioHistoryItem::isDetached(void) const
-	?genre@RadioStation@@QBEHXZ @ 120 NONAME ; int RadioStation::genre(void) const
-	?qt_metacall@RadioScannerEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 121 NONAME ; int RadioScannerEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?emitTunedToFrequency@RadioUiEngine@@AAEXIH@Z @ 122 NONAME ; void RadioUiEngine::emitTunedToFrequency(unsigned int, int)
-	??0RadioStation@@QAE@XZ @ 123 NONAME ; RadioStation::RadioStation(void)
-	?psType@RadioStation@@QBE?AV?$QFlags@W4PsTypeFlag@RadioStation@@@@XZ @ 124 NONAME ; class QFlags<enum RadioStation::PsTypeFlag> RadioStation::psType(void) const
-	??1RadioHistoryModel@@UAE@XZ @ 125 NONAME ; RadioHistoryModel::~RadioHistoryModel(void)
-	?d_func@RadioUiEngine@@ABEPBVRadioUiEnginePrivate@@XZ @ 126 NONAME ; class RadioUiEnginePrivate const * RadioUiEngine::d_func(void) const
-	?findStation@RadioStationModel@@QBE?AVRadioStation@@IW4Criteria@FindCriteria@@@Z @ 127 NONAME ; class RadioStation RadioStationModel::findStation(unsigned int, enum FindCriteria::Criteria) const
-	?scannerEngine@RadioUiEngine@@QAEPAVRadioScannerEngine@@XZ @ 128 NONAME ; class RadioScannerEngine * RadioUiEngine::scannerEngine(void)
-	?setManualSeekMode@RadioUiEngine@@QAEX_N@Z @ 129 NONAME ; void RadioUiEngine::setManualSeekMode(bool)
-	?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 130 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void)
-	?startScanning@RadioScannerEngine@@QAEXXZ @ 131 NONAME ; void RadioScannerEngine::startScanning(void)
-	?emitStationFound@RadioScannerEngine@@AAEXABVRadioStation@@@Z @ 132 NONAME ; void RadioScannerEngine::emitStationFound(class RadioStation const &)
-	?isValid@RadioHistoryItem@@QBE_NXZ @ 133 NONAME ; bool RadioHistoryItem::isValid(void) const
-	?setPsType@RadioStation@@AAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 134 NONAME ; void RadioStation::setPsType(class QFlags<enum RadioStation::PsTypeFlag>)
-	?setFrequency@RadioUiEngine@@QAEXIH@Z @ 135 NONAME ; void RadioUiEngine::setFrequency(unsigned int, int)
-	?data@RadioHistoryModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 136 NONAME ; class QVariant RadioHistoryModel::data(class QModelIndex const &, int) const
-	??4RadioHistoryItem@@QAEAAV0@ABV0@@Z @ 137 NONAME ; class RadioHistoryItem & RadioHistoryItem::operator=(class RadioHistoryItem const &)
-	?url@RadioStation@@QBE?AVQString@@XZ @ 138 NONAME ; class QString RadioStation::url(void) const
-	?historyModel@RadioUiEngine@@QAEAAVRadioHistoryModel@@XZ @ 139 NONAME ; class RadioHistoryModel & RadioUiEngine::historyModel(void)
-	?emitRdsAvailabilityChanged@RadioUiEngine@@AAEX_N@Z @ 140 NONAME ; void RadioUiEngine::emitRdsAvailabilityChanged(bool)
-	?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 141 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const
-	?setStation@RadioHistoryItem@@QAEXABVQString@@@Z @ 142 NONAME ; void RadioHistoryItem::setStation(class QString const &)
-	?removeByModelIndices@RadioStationModel@@QAEXAAV?$QList@VQModelIndex@@@@_N@Z @ 143 NONAME ; void RadioStationModel::removeByModelIndices(class QList<class QModelIndex> &, bool)
-	?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 144 NONAME ; void * RadioStationModel::qt_metacast(char const *)
-	?hasSentRds@RadioStation@@QBE_NXZ @ 145 NONAME ; bool RadioStation::hasSentRds(void) const
-	?presetIndex@RadioStation@@QBEHXZ @ 146 NONAME ; int RadioStation::presetIndex(void) const
-	?cancel@RadioScannerEngine@@QAEXXZ @ 147 NONAME ; void RadioScannerEngine::cancel(void)
-	?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 148 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject
-	?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 149 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &)
-	?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 150 NONAME ; void RadioUiEngine::emitMuteChanged(bool)
-	?setDynamicPsText@RadioStation@@AAEXABVQString@@@Z @ 151 NONAME ; void RadioStation::setDynamicPsText(class QString const &)
-	?currentSongReset@RadioHistoryModel@@IAEXXZ @ 152 NONAME ; void RadioHistoryModel::currentSongReset(void)
-	?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 153 NONAME ; void RadioStationModel::removeByPresetIndex(int)
-	?d_func@RadioScannerEngine@@AAEPAVRadioScannerEnginePrivate@@XZ @ 154 NONAME ; class RadioScannerEnginePrivate * RadioScannerEngine::d_func(void)
-	?isRenamed@RadioStation@@QBE_NXZ @ 155 NONAME ; bool RadioStation::isRenamed(void) const
-	?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 156 NONAME ; class RadioStation RadioStationModel::stationAt(int) const
-	?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 157 NONAME ; void RadioStationModel::removeStation(class RadioStation const &)
-	?openMusicStore@RadioUiEngine@@QAEXABVRadioHistoryItem@@W4MusicStore@1@@Z @ 158 NONAME ; void RadioUiEngine::openMusicStore(class RadioHistoryItem const &, enum RadioUiEngine::MusicStore)
-	?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 159 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const
-	?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 160 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &)
-	?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 161 NONAME ; void RadioStation::setType(class QFlags<enum RadioStation::TypeFlag>)
-	??0RadioHistoryItem@@QAE@XZ @ 162 NONAME ; RadioHistoryItem::RadioHistoryItem(void)
-	?removeByFrequency@RadioStationModel@@QAEXI@Z @ 163 NONAME ; void RadioStationModel::removeByFrequency(unsigned int)
-	?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 164 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const
-	?findPresetIndex@RadioStationModel@@QAEHH@Z @ 165 NONAME ; int RadioStationModel::findPresetIndex(int)
-	??0RadioHistoryItem@@QAE@ABV0@@Z @ 166 NONAME ; RadioHistoryItem::RadioHistoryItem(class RadioHistoryItem const &)
-	?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 167 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const
-	?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 168 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void)
-	?isPoweringOff@RadioUiEngine@@QBE_NXZ @ 169 NONAME ; bool RadioUiEngine::isPoweringOff(void) const
-	?lastTunedFrequency@RadioUiEngine@@SAII@Z @ 170 NONAME ; unsigned int RadioUiEngine::lastTunedFrequency(unsigned int)
-	?tr@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 171 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *)
-	?removeAll@RadioHistoryModel@@QAEX_N@Z @ 172 NONAME ; void RadioHistoryModel::removeAll(bool)
-	?hasGenre@RadioStation@@QBE_NXZ @ 173 NONAME ; bool RadioStation::hasGenre(void) const
-	?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 174 NONAME ; void RadioUiEngine::audioRouteChanged(bool)
-	?setPowerOn@RadioUiEngine@@QAEXXZ @ 175 NONAME ; void RadioUiEngine::setPowerOn(void)
-	?tr@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 176 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *, int)
-	?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 177 NONAME ; class QString RadioStation::dynamicPsText(void) const
-	?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 178 NONAME ; bool RadioUiEngine::isFirstTimeStart(void)
-	?setMute@RadioUiEngine@@QAEX_N@Z @ 179 NONAME ; void RadioUiEngine::setMute(bool)
-	?setGenre@RadioStation@@AAEXH@Z @ 180 NONAME ; void RadioStation::setGenre(int)
-	??0RadioScannerEngine@@QAE@AAVRadioUiEnginePrivate@@@Z @ 181 NONAME ; RadioScannerEngine::RadioScannerEngine(class RadioUiEnginePrivate &)
-	?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 182 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool)
-	??_ERadioUiEngine@@UAE@I@Z @ 183 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int)
-	?init@RadioUiEngine@@QAE_NXZ @ 184 NONAME ; bool RadioUiEngine::init(void)
-	?setRadioText@RadioStation@@AAEXABVQString@@@Z @ 185 NONAME ; void RadioStation::setRadioText(class QString const &)
-	?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 186 NONAME ; class QFlags<enum RadioStation::ChangeFlag> RadioStation::changeFlags(void) const
-	?findFrequency@RadioStationModel@@QBE_NIAAVRadioStation@@W4Criteria@FindCriteria@@@Z @ 187 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &, enum FindCriteria::Criteria) const
-	?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 188 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void)
-	?addRadioTextPlus@RadioHistoryModel@@AAEXHABVQString@@ABVRadioStation@@@Z @ 189 NONAME ; void RadioHistoryModel::addRadioTextPlus(int, class QString const &, class RadioStation const &)
-	?qt_metacast@RadioHistoryModel@@UAEPAXPBD@Z @ 190 NONAME ; void * RadioHistoryModel::qt_metacast(char const *)
-	?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 191 NONAME ; void RadioStationModel::setDetail(class QFlags<enum RadioStationModel::DetailFlag>)
-	??1RadioUiEngine@@UAE@XZ @ 192 NONAME ; RadioUiEngine::~RadioUiEngine(void)
-	?tr@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 193 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *)
-	?time@RadioHistoryItem@@QBE?AVQString@@XZ @ 194 NONAME ; class QString RadioHistoryItem::time(void) const
-	?reportChangedData@RadioHistoryModel@@AAEXHH@Z @ 195 NONAME ; void RadioHistoryModel::reportChangedData(int, int)
-	?artist@RadioHistoryItem@@QBE?AVQString@@XZ @ 196 NONAME ; class QString RadioHistoryItem::artist(void) const
-	?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 197 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *)
-	?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 198 NONAME ; bool RadioStation::isType(class QFlags<enum RadioStation::TypeFlag>) const
-	?resetCurrentSong@RadioHistoryModel@@QAEXXZ @ 199 NONAME ; void RadioHistoryModel::resetCurrentSong(void)
-	?d_func@RadioHistoryModel@@ABEPBVRadioHistoryModelPrivate@@XZ @ 200 NONAME ; class RadioHistoryModelPrivate const * RadioHistoryModel::d_func(void) const
-	?volumeChanged@RadioUiEngine@@IAEXH@Z @ 201 NONAME ; void RadioUiEngine::volumeChanged(int)
-	?title@RadioHistoryItem@@QBE?AVQString@@XZ @ 202 NONAME ; class QString RadioHistoryItem::title(void) const
-	?stationFound@RadioScannerEngine@@IAEXABVRadioStation@@@Z @ 203 NONAME ; void RadioScannerEngine::stationFound(class RadioStation const &)
-	?resetChangeFlags@RadioStation@@QAEXXZ @ 204 NONAME ; void RadioStation::resetChangeFlags(void)
-	?powerOffRequested@RadioUiEngine@@IAEXXZ @ 205 NONAME ; void RadioUiEngine::powerOffRequested(void)
-	?metaObject@RadioScannerEngine@@UBEPBUQMetaObject@@XZ @ 206 NONAME ; struct QMetaObject const * RadioScannerEngine::metaObject(void) const
-	?qt_metacast@RadioScannerEngine@@UAEPAXPBD@Z @ 207 NONAME ; void * RadioScannerEngine::qt_metacast(char const *)
-	?setIcons@RadioStationModel@@QAEXABVQIcon@@00@Z @ 208 NONAME ; void RadioStationModel::setIcons(class QIcon const &, class QIcon const &, class QIcon const &)
-	?callSignChar@RadioStation@@AAEDI@Z @ 209 NONAME ; char RadioStation::callSignChar(unsigned int)
-	??_ERadioStation@@UAE@I@Z @ 210 NONAME ; RadioStation::~RadioStation(unsigned int)
-	?antennaStatusChanged@RadioUiEngine@@IAEX_N@Z @ 211 NONAME ; void RadioUiEngine::antennaStatusChanged(bool)
-	?staticMetaObject@RadioHistoryModel@@2UQMetaObject@@B @ 212 NONAME ; struct QMetaObject const RadioHistoryModel::staticMetaObject
-	?setFirstTimeStartPerformed@RadioUiEngine@@QAEX_N@Z @ 213 NONAME ; void RadioUiEngine::setFirstTimeStartPerformed(bool)
-	??0RadioStation@@AAE@HI@Z @ 214 NONAME ; RadioStation::RadioStation(int, unsigned int)
-	?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 215 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?isDetached@RadioStation@@QBE_NXZ @ 216 NONAME ; bool RadioStation::isDetached(void) const
-	??0RadioHistoryItem@@QAE@ABVQString@@0@Z @ 217 NONAME ; RadioHistoryItem::RadioHistoryItem(class QString const &, class QString const &)
-	?name@RadioStation@@QBE?AVQString@@XZ @ 218 NONAME ; class QString RadioStation::name(void) const
-	?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 219 NONAME ; bool RadioStation::hasDataChanged(class QFlags<enum RadioStation::ChangeFlag>) const
-	?removeAll@RadioStationModel@@QAEXW4RemoveMode@1@@Z @ 220 NONAME ; void RadioStationModel::removeAll(enum RadioStationModel::RemoveMode)
-	?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 221 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const
-	?itemAdded@RadioHistoryModel@@IAEXXZ @ 222 NONAME ; void RadioHistoryModel::itemAdded(void)
-	?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 223 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void)
-	?setShowDetails@RadioHistoryModel@@QAEX_N@Z @ 224 NONAME ; void RadioHistoryModel::setShowDetails(bool)
-	?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 225 NONAME ; void RadioUiEngine::launchSongRecognition(void)
-	?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 226 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const
-	?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 227 NONAME ; class QString RadioStation::iterateCallSign(int, int)
-	?toggleMute@RadioUiEngine@@QAEXXZ @ 228 NONAME ; void RadioUiEngine::toggleMute(void)
-	?piCode@RadioStation@@QBEHXZ @ 229 NONAME ; int RadioStation::piCode(void) const
-	?genreToString@RadioUiEngine@@QAE?AVQString@@HW4Target@GenreTarget@@@Z @ 230 NONAME ; class QString RadioUiEngine::genreToString(int, enum GenreTarget::Target)
-	??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 231 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *)
-	?hasRadiotext@RadioStation@@QBE_NXZ @ 232 NONAME ; bool RadioStation::hasRadiotext(void) const
-	?setCurrentTime@RadioHistoryItem@@QAEXXZ @ 233 NONAME ; void RadioHistoryItem::setCurrentTime(void)
-	?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 234 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void)
-	?station@RadioHistoryItem@@QBE?AVQString@@XZ @ 235 NONAME ; class QString RadioHistoryItem::station(void) const
-	??_ERadioHistoryModel@@UAE@I@Z @ 236 NONAME ; RadioHistoryModel::~RadioHistoryModel(unsigned int)
-	?minFrequency@RadioUiEngine@@QBEIXZ @ 237 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const
-	?isTagged@RadioHistoryItem@@QBE_NXZ @ 238 NONAME ; bool RadioHistoryItem::isTagged(void) const
-	?addScannedFrequency@RadioScannerEngine@@QAEXI@Z @ 239 NONAME ; void RadioScannerEngine::addScannedFrequency(unsigned int)
-	?setShowTagged@RadioHistoryModel@@QAEX_N@Z @ 240 NONAME ; void RadioHistoryModel::setShowTagged(bool)
-	?setPresetIndex@RadioStation@@AAEXH@Z @ 241 NONAME ; void RadioStation::setPresetIndex(int)
-	?setName@RadioStation@@AAEXABVQString@@@Z @ 242 NONAME ; void RadioStation::setName(class QString const &)
-	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 243 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *)
-	?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 244 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const
-	??0RadioHistoryModel@@AAE@AAVRadioUiEngine@@@Z @ 245 NONAME ; RadioHistoryModel::RadioHistoryModel(class RadioUiEngine &)
-	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 246 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int)
-	?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 247 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &)
-	?isFavorite@RadioStation@@QBE_NXZ @ 248 NONAME ; bool RadioStation::isFavorite(void) const
-	?metaObject@RadioHistoryModel@@UBEPBUQMetaObject@@XZ @ 249 NONAME ; struct QMetaObject const * RadioHistoryModel::metaObject(void) const
-	?seekingStarted@RadioUiEngine@@IAEXH@Z @ 250 NONAME ; void RadioUiEngine::seekingStarted(int)
-	?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seek@@@Z @ 251 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seek::Direction)
-	?isRecognizedByRds@RadioHistoryItem@@QBE_NXZ @ 252 NONAME ; bool RadioHistoryItem::isRecognizedByRds(void) const
-	?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 253 NONAME ; void RadioStationModel::setFavorites(class QList<class QModelIndex> const &)
-	?setArtist@RadioHistoryItem@@QAEXABVQString@@@Z @ 254 NONAME ; void RadioHistoryItem::setArtist(class QString const &)
-	??_ERadioStationModel@@UAE@I@Z @ 255 NONAME ; RadioStationModel::~RadioStationModel(unsigned int)
-	?setTitle@RadioHistoryItem@@QAEXABVQString@@@Z @ 256 NONAME ; void RadioHistoryItem::setTitle(class QString const &)
+	?setFrequency@RadioHistoryItem@@QAEXI@Z @ 1 NONAME ; void RadioHistoryItem::setFrequency(unsigned int)
+	?contains@RadioStationModel@@QBE_NI@Z @ 2 NONAME ; bool RadioStationModel::contains(unsigned int) const
+	?qt_metacast@RadioUiEngine@@UAEPAXPBD@Z @ 3 NONAME ; void * RadioUiEngine::qt_metacast(char const *)
+	?parseFrequency@RadioStation@@SA?AVQString@@I@Z @ 4 NONAME ; class QString RadioStation::parseFrequency(unsigned int)
+	??0RadioStation@@QAE@ABV0@@Z @ 5 NONAME ; RadioStation::RadioStation(class RadioStation const &)
+	?frequency@RadioStation@@QBEIXZ @ 6 NONAME ; unsigned int RadioStation::frequency(void) const
+	?setFavoriteByFrequency@RadioStationModel@@QAEXI_N@Z @ 7 NONAME ; void RadioStationModel::setFavoriteByFrequency(unsigned int, bool)
+	?staticMetaObject@RadioUiEngine@@2UQMetaObject@@B @ 8 NONAME ; struct QMetaObject const RadioUiEngine::staticMetaObject
+	?indexFromFrequency@RadioStationModel@@QAEHI@Z @ 9 NONAME ; int RadioStationModel::indexFromFrequency(unsigned int)
+	?setFavoriteByPreset@RadioStationModel@@QAEXH_N@Z @ 10 NONAME ; void RadioStationModel::setFavoriteByPreset(int, bool)
+	?qt_metacall@RadioHistoryModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 11 NONAME ; int RadioHistoryModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?emitVolumeChanged@RadioUiEngine@@AAEXH@Z @ 12 NONAME ; void RadioUiEngine::emitVolumeChanged(int)
+	?qt_metacall@RadioUiEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 13 NONAME ; int RadioUiEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??4RadioStation@@QAEAAV0@ABV0@@Z @ 14 NONAME ; class RadioStation & RadioStation::operator=(class RadioStation const &)
+	?stationModel@RadioUiEngine@@QAEAAVRadioStationModel@@XZ @ 15 NONAME ; class RadioStationModel & RadioUiEngine::stationModel(void)
+	?toggleTagging@RadioHistoryModel@@QAEXABVRadioHistoryItem@@H@Z @ 16 NONAME ; void RadioHistoryModel::toggleTagging(class RadioHistoryItem const &, int)
+	?muteChanged@RadioUiEngine@@IAEX_N@Z @ 17 NONAME ; void RadioUiEngine::muteChanged(bool)
+	?maxFrequency@RadioUiEngine@@QBEIXZ @ 18 NONAME ; unsigned int RadioUiEngine::maxFrequency(void) const
+	?saveStation@RadioStationModel@@QAEXAAVRadioStation@@@Z @ 19 NONAME ; void RadioStationModel::saveStation(class RadioStation &)
+	?hasChanged@RadioStation@@QBE_NXZ @ 20 NONAME ; bool RadioStation::hasChanged(void) const
+	?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 21 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *, int)
+	?isScanning@RadioUiEngine@@QBE_NXZ @ 22 NONAME ; bool RadioUiEngine::isScanning(void) const
+	?d_func@RadioHistoryModel@@AAEPAVRadioHistoryModelPrivate@@XZ @ 23 NONAME ; class RadioHistoryModelPrivate * RadioHistoryModel::d_func(void)
+	?skipStation@RadioUiEngine@@QAEIW4Mode@StationSkip@@IH@Z @ 24 NONAME ; unsigned int RadioUiEngine::skipStation(enum StationSkip::Mode, unsigned int, int)
+	?piCodeToCallSign@RadioStation@@AAE?AVQString@@I@Z @ 25 NONAME ; class QString RadioStation::piCodeToCallSign(unsigned int)
+	?favoriteChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 26 NONAME ; void RadioStationModel::favoriteChanged(class RadioStation const &)
+	?radioStatusChanged@RadioUiEngine@@IAEX_N@Z @ 27 NONAME ; void RadioUiEngine::radioStatusChanged(bool)
+	?setIcons@RadioHistoryModel@@QAEXABVQIcon@@0@Z @ 28 NONAME ; void RadioHistoryModel::setIcons(class QIcon const &, class QIcon const &)
+	?isCurrentSongRecognized@RadioHistoryModel@@QBE_NXZ @ 29 NONAME ; bool RadioHistoryModel::isCurrentSongRecognized(void) const
+	?addStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 30 NONAME ; void RadioStationModel::addStation(class RadioStation const &)
+	?clearRadioTextPlus@RadioHistoryModel@@AAEXXZ @ 31 NONAME ; void RadioHistoryModel::clearRadioTextPlus(void)
+	?favoriteCount@RadioStationModel@@QAEHXZ @ 32 NONAME ; int RadioStationModel::favoriteCount(void)
+	??1RadioScannerEngine@@UAE@XZ @ 33 NONAME ; RadioScannerEngine::~RadioScannerEngine(void)
+	?launchBrowser@RadioUiEngine@@QAEXABVQString@@@Z @ 34 NONAME ; void RadioUiEngine::launchBrowser(class QString const &)
+	?isScanning@RadioScannerEngine@@QBE_NXZ @ 35 NONAME ; bool RadioScannerEngine::isScanning(void) const
+	??1RadioHistoryItem@@QAE@XZ @ 36 NONAME ; RadioHistoryItem::~RadioHistoryItem(void)
+	?trUtf8@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 37 NONAME ; class QString RadioScannerEngine::trUtf8(char const *, char const *)
+	?emitDataChanged@RadioStationModel@@AAEXABVRadioStation@@@Z @ 38 NONAME ; void RadioStationModel::emitDataChanged(class RadioStation const &)
+	?setPowerOff@RadioUiEngine@@QAEXH@Z @ 39 NONAME ; void RadioUiEngine::setPowerOff(int)
+	?isRadioOn@RadioUiEngine@@QBE_NXZ @ 40 NONAME ; bool RadioUiEngine::isRadioOn(void) const
+	?continueScanning@RadioScannerEngine@@QAEXXZ @ 41 NONAME ; void RadioScannerEngine::continueScanning(void)
+	?localCount@RadioStationModel@@QAEHXZ @ 42 NONAME ; int RadioStationModel::localCount(void)
+	?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 43 NONAME ; class QMap<unsigned int, class RadioStation> const & RadioStationModel::list(void) const
+	?tr@RadioStationModel@@SA?AVQString@@PBD0@Z @ 44 NONAME ; class QString RadioStationModel::tr(char const *, char const *)
+	?findClosest@RadioStationModel@@QAE?AVRadioStation@@IW4Mode@StationSkip@@@Z @ 45 NONAME ; class RadioStation RadioStationModel::findClosest(unsigned int, enum StationSkip::Mode)
+	?flags@RadioStationModel@@UBE?AV?$QFlags@W4ItemFlag@Qt@@@@ABVQModelIndex@@@Z @ 46 NONAME ; class QFlags<enum Qt::ItemFlag> RadioStationModel::flags(class QModelIndex const &) const
+	?launchRadioServer@RadioUiEngine@@SAXXZ @ 47 NONAME ; void RadioUiEngine::launchRadioServer(void)
+	?id@RadioHistoryItem@@QBEHXZ @ 48 NONAME ; int RadioHistoryItem::id(void) const
+	?stationsInRange@RadioUiEngine@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 49 NONAME ; class QList<class RadioStation> RadioUiEngine::stationsInRange(unsigned int, unsigned int)
+	?cancelTimer@RadioUiEngine@@QAEXHPBVQObject@@@Z @ 50 NONAME ; void RadioUiEngine::cancelTimer(int, class QObject const *)
+	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 51 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *)
+	?addItem@RadioHistoryModel@@QAEXABVQString@@0ABVRadioStation@@_N@Z @ 52 NONAME ; void RadioHistoryModel::addItem(class QString const &, class QString const &, class RadioStation const &, bool)
+	?tr@RadioScannerEngine@@SA?AVQString@@PBD0H@Z @ 53 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *, int)
+	?lastVolume@RadioUiEngine@@SAHXZ @ 54 NONAME ; int RadioUiEngine::lastVolume(void)
+	?isInManualSeekMode@RadioUiEngine@@QBE_NXZ @ 55 NONAME ; bool RadioUiEngine::isInManualSeekMode(void) const
+	?setVolume@RadioUiEngine@@QAEXH@Z @ 56 NONAME ; void RadioUiEngine::setVolume(int)
+	?setFavorite@RadioStation@@QAEX_N@Z @ 57 NONAME ; void RadioStation::setFavorite(bool)
+	?d_func@RadioStationModel@@ABEPBVRadioStationModelPrivate@@XZ @ 58 NONAME ; class RadioStationModelPrivate const * RadioStationModel::d_func(void) const
+	??1RadioStationModel@@UAE@XZ @ 59 NONAME ; RadioStationModel::~RadioStationModel(void)
+	?isMuted@RadioUiEngine@@QBE_NXZ @ 60 NONAME ; bool RadioUiEngine::isMuted(void) const
+	?setUrl@RadioStation@@AAEXABVQString@@@Z @ 61 NONAME ; void RadioStation::setUrl(class QString const &)
+	?isValid@RadioStation@@QBE_NXZ @ 62 NONAME ; bool RadioStation::isValid(void) const
+	?data_ptr@RadioStation@@QAEAAV?$QSharedDataPointer@VRadioStationPrivate@@@@XZ @ 63 NONAME ; class QSharedDataPointer<class RadioStationPrivate> & RadioStation::data_ptr(void)
+	?trUtf8@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 64 NONAME ; class QString RadioUiEngine::trUtf8(char const *, char const *, int)
+	?reset@RadioHistoryItem@@QAEXXZ @ 65 NONAME ; void RadioHistoryItem::reset(void)
+	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0@Z @ 66 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *)
+	??0RadioStationModel@@QAE@AAVRadioUiEnginePrivate@@@Z @ 67 NONAME ; RadioStationModel::RadioStationModel(class RadioUiEnginePrivate &)
+	?frequency@RadioHistoryItem@@QBEIXZ @ 68 NONAME ; unsigned int RadioHistoryItem::frequency(void) const
+	?qt_metacall@RadioScannerEngine@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 69 NONAME ; int RadioScannerEngine::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?emitTunedToFrequency@RadioUiEngine@@AAEXIH@Z @ 70 NONAME ; void RadioUiEngine::emitTunedToFrequency(unsigned int, int)
+	?psType@RadioStation@@QBE?AV?$QFlags@W4PsTypeFlag@RadioStation@@@@XZ @ 71 NONAME ; class QFlags<enum RadioStation::PsTypeFlag> RadioStation::psType(void) const
+	?d_func@RadioUiEngine@@ABEPBVRadioUiEnginePrivate@@XZ @ 72 NONAME ; class RadioUiEnginePrivate const * RadioUiEngine::d_func(void) const
+	?scannerEngine@RadioUiEngine@@QAEPAVRadioScannerEngine@@XZ @ 73 NONAME ; class RadioScannerEngine * RadioUiEngine::scannerEngine(void)
+	?setManualSeekMode@RadioUiEngine@@QAEX_N@Z @ 74 NONAME ; void RadioUiEngine::setManualSeekMode(bool)
+	?startScanning@RadioScannerEngine@@QAEXXZ @ 75 NONAME ; void RadioScannerEngine::startScanning(void)
+	?emitStationFound@RadioScannerEngine@@AAEXABVRadioStation@@@Z @ 76 NONAME ; void RadioScannerEngine::emitStationFound(class RadioStation const &)
+	?setPsType@RadioStation@@AAEXV?$QFlags@W4PsTypeFlag@RadioStation@@@@@Z @ 77 NONAME ; void RadioStation::setPsType(class QFlags<enum RadioStation::PsTypeFlag>)
+	?setFrequency@RadioUiEngine@@QAEXIH@Z @ 78 NONAME ; void RadioUiEngine::setFrequency(unsigned int, int)
+	??4RadioHistoryItem@@QAEAAV0@ABV0@@Z @ 79 NONAME ; class RadioHistoryItem & RadioHistoryItem::operator=(class RadioHistoryItem const &)
+	?url@RadioStation@@QBE?AVQString@@XZ @ 80 NONAME ; class QString RadioStation::url(void) const
+	?historyModel@RadioUiEngine@@QAEAAVRadioHistoryModel@@XZ @ 81 NONAME ; class RadioHistoryModel & RadioUiEngine::historyModel(void)
+	?setStation@RadioHistoryItem@@QAEXABVQString@@@Z @ 82 NONAME ; void RadioHistoryItem::setStation(class QString const &)
+	?qt_metacast@RadioStationModel@@UAEPAXPBD@Z @ 83 NONAME ; void * RadioStationModel::qt_metacast(char const *)
+	?cancel@RadioScannerEngine@@QAEXXZ @ 84 NONAME ; void RadioScannerEngine::cancel(void)
+	?addRecognizedSong@RadioUiEngine@@QAEXABVQString@@0ABVRadioStation@@@Z @ 85 NONAME ; void RadioUiEngine::addRecognizedSong(class QString const &, class QString const &, class RadioStation const &)
+	?emitMuteChanged@RadioUiEngine@@AAEX_N@Z @ 86 NONAME ; void RadioUiEngine::emitMuteChanged(bool)
+	?setDynamicPsText@RadioStation@@AAEXABVQString@@@Z @ 87 NONAME ; void RadioStation::setDynamicPsText(class QString const &)
+	?removeByPresetIndex@RadioStationModel@@QAEXH@Z @ 88 NONAME ; void RadioStationModel::removeByPresetIndex(int)
+	?d_func@RadioScannerEngine@@AAEPAVRadioScannerEnginePrivate@@XZ @ 89 NONAME ; class RadioScannerEnginePrivate * RadioScannerEngine::d_func(void)
+	?stationAt@RadioStationModel@@QBE?AVRadioStation@@H@Z @ 90 NONAME ; class RadioStation RadioStationModel::stationAt(int) const
+	?openMusicStore@RadioUiEngine@@QAEXABVRadioHistoryItem@@W4MusicStore@1@@Z @ 91 NONAME ; void RadioUiEngine::openMusicStore(class RadioHistoryItem const &, enum RadioUiEngine::MusicStore)
+	?dynamicPsChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 92 NONAME ; void RadioStationModel::dynamicPsChanged(class RadioStation const &)
+	?setType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 93 NONAME ; void RadioStation::setType(class QFlags<enum RadioStation::TypeFlag>)
+	??0RadioHistoryItem@@QAE@XZ @ 94 NONAME ; RadioHistoryItem::RadioHistoryItem(void)
+	?findPresetIndex@RadioStationModel@@QAEHH@Z @ 95 NONAME ; int RadioStationModel::findPresetIndex(int)
+	?metaObject@RadioStationModel@@UBEPBUQMetaObject@@XZ @ 96 NONAME ; struct QMetaObject const * RadioStationModel::metaObject(void) const
+	?getStaticMetaObject@RadioStationModel@@SAABUQMetaObject@@XZ @ 97 NONAME ; struct QMetaObject const & RadioStationModel::getStaticMetaObject(void)
+	?isPoweringOff@RadioUiEngine@@QBE_NXZ @ 98 NONAME ; bool RadioUiEngine::isPoweringOff(void) const
+	?tr@RadioScannerEngine@@SA?AVQString@@PBD0@Z @ 99 NONAME ; class QString RadioScannerEngine::tr(char const *, char const *)
+	?hasGenre@RadioStation@@QBE_NXZ @ 100 NONAME ; bool RadioStation::hasGenre(void) const
+	?setPowerOn@RadioUiEngine@@QAEXXZ @ 101 NONAME ; void RadioUiEngine::setPowerOn(void)
+	?dynamicPsText@RadioStation@@QBE?AVQString@@XZ @ 102 NONAME ; class QString RadioStation::dynamicPsText(void) const
+	?isFirstTimeStart@RadioUiEngine@@QAE_NXZ @ 103 NONAME ; bool RadioUiEngine::isFirstTimeStart(void)
+	?setMute@RadioUiEngine@@QAEX_N@Z @ 104 NONAME ; void RadioUiEngine::setMute(bool)
+	?init@RadioUiEngine@@QAE_NXZ @ 105 NONAME ; bool RadioUiEngine::init(void)
+	?setRadioText@RadioStation@@AAEXABVQString@@@Z @ 106 NONAME ; void RadioStation::setRadioText(class QString const &)
+	?changeFlags@RadioStation@@QBE?AV?$QFlags@W4ChangeFlag@RadioStation@@@@XZ @ 107 NONAME ; class QFlags<enum RadioStation::ChangeFlag> RadioStation::changeFlags(void) const
+	?clearRadiotext@RadioStationModel@@AAEXH@Z @ 108 NONAME ; void RadioStationModel::clearRadiotext(int)
+	?qt_metacast@RadioHistoryModel@@UAEPAXPBD@Z @ 109 NONAME ; void * RadioHistoryModel::qt_metacast(char const *)
+	??1RadioUiEngine@@UAE@XZ @ 110 NONAME ; RadioUiEngine::~RadioUiEngine(void)
+	?tr@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 111 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *)
+	?initialize@RadioStationModel@@QAEXPAVRadioPresetStorage@@PAVRadioEngineWrapper@@@Z @ 112 NONAME ; void RadioStationModel::initialize(class RadioPresetStorage *, class RadioEngineWrapper *)
+	?resetCurrentSong@RadioHistoryModel@@QAEXXZ @ 113 NONAME ; void RadioHistoryModel::resetCurrentSong(void)
+	?d_func@RadioHistoryModel@@ABEPBVRadioHistoryModelPrivate@@XZ @ 114 NONAME ; class RadioHistoryModelPrivate const * RadioHistoryModel::d_func(void) const
+	?stationFound@RadioScannerEngine@@IAEXABVRadioStation@@@Z @ 115 NONAME ; void RadioScannerEngine::stationFound(class RadioStation const &)
+	?resetChangeFlags@RadioStation@@QAEXXZ @ 116 NONAME ; void RadioStation::resetChangeFlags(void)
+	?metaObject@RadioScannerEngine@@UBEPBUQMetaObject@@XZ @ 117 NONAME ; struct QMetaObject const * RadioScannerEngine::metaObject(void) const
+	?setIcons@RadioStationModel@@QAEXABVQIcon@@00@Z @ 118 NONAME ; void RadioStationModel::setIcons(class QIcon const &, class QIcon const &, class QIcon const &)
+	?callSignChar@RadioStation@@AAEDI@Z @ 119 NONAME ; char RadioStation::callSignChar(unsigned int)
+	??_ERadioStation@@UAE@I@Z @ 120 NONAME ; RadioStation::~RadioStation(unsigned int)
+	?staticMetaObject@RadioHistoryModel@@2UQMetaObject@@B @ 121 NONAME ; struct QMetaObject const RadioHistoryModel::staticMetaObject
+	?isDetached@RadioStation@@QBE_NXZ @ 122 NONAME ; bool RadioStation::isDetached(void) const
+	??0RadioHistoryItem@@QAE@ABVQString@@0@Z @ 123 NONAME ; RadioHistoryItem::RadioHistoryItem(class QString const &, class QString const &)
+	?removeAll@RadioStationModel@@QAEXW4RemoveMode@1@@Z @ 124 NONAME ; void RadioStationModel::removeAll(enum RadioStationModel::RemoveMode)
+	?setShowDetails@RadioHistoryModel@@QAEX_N@Z @ 125 NONAME ; void RadioHistoryModel::setShowDetails(bool)
+	?rowCount@RadioStationModel@@UBEHABVQModelIndex@@@Z @ 126 NONAME ; int RadioStationModel::rowCount(class QModelIndex const &) const
+	?toggleMute@RadioUiEngine@@QAEXXZ @ 127 NONAME ; void RadioUiEngine::toggleMute(void)
+	?genreToString@RadioUiEngine@@QAE?AVQString@@HW4Target@GenreTarget@@@Z @ 128 NONAME ; class QString RadioUiEngine::genreToString(int, enum GenreTarget::Target)
+	?isTimerActive@RadioUiEngine@@QBE_NHPBVQObject@@@Z @ 129 NONAME ; bool RadioUiEngine::isTimerActive(int, class QObject const *) const
+	?d_func@RadioUiEngine@@AAEPAVRadioUiEnginePrivate@@XZ @ 130 NONAME ; class RadioUiEnginePrivate * RadioUiEngine::d_func(void)
+	?station@RadioHistoryItem@@QBE?AVQString@@XZ @ 131 NONAME ; class QString RadioHistoryItem::station(void) const
+	??_ERadioHistoryModel@@UAE@I@Z @ 132 NONAME ; RadioHistoryModel::~RadioHistoryModel(unsigned int)
+	?addScannedFrequency@RadioScannerEngine@@QAEXI@Z @ 133 NONAME ; void RadioScannerEngine::addScannedFrequency(unsigned int)
+	?setPresetIndex@RadioStation@@AAEXH@Z @ 134 NONAME ; void RadioStation::setPresetIndex(int)
+	?setName@RadioStation@@AAEXABVQString@@@Z @ 135 NONAME ; void RadioStation::setName(class QString const &)
+	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0@Z @ 136 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *)
+	?frequencyStepSize@RadioUiEngine@@QBEIXZ @ 137 NONAME ; unsigned int RadioUiEngine::frequencyStepSize(void) const
+	??0RadioHistoryModel@@AAE@AAVRadioUiEngine@@@Z @ 138 NONAME ; RadioHistoryModel::RadioHistoryModel(class RadioUiEngine &)
+	?trUtf8@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 139 NONAME ; class QString RadioStationModel::trUtf8(char const *, char const *, int)
+	?metaObject@RadioHistoryModel@@UBEPBUQMetaObject@@XZ @ 140 NONAME ; struct QMetaObject const * RadioHistoryModel::metaObject(void) const
+	?setFavorites@RadioStationModel@@QAEXABV?$QList@VQModelIndex@@@@@Z @ 141 NONAME ; void RadioStationModel::setFavorites(class QList<class QModelIndex> const &)
+	?setArtist@RadioHistoryItem@@QAEXABVQString@@@Z @ 142 NONAME ; void RadioHistoryItem::setArtist(class QString const &)
+	?setTitle@RadioHistoryItem@@QAEXABVQString@@@Z @ 143 NONAME ; void RadioHistoryItem::setTitle(class QString const &)
+	?tr@RadioUiEngine@@SA?AVQString@@PBD0@Z @ 144 NONAME ; class QString RadioUiEngine::tr(char const *, char const *)
+	?currentStation@RadioStationModel@@QBEABVRadioStation@@XZ @ 145 NONAME ; class RadioStation const & RadioStationModel::currentStation(void) const
+	?rowCount@RadioHistoryModel@@UBEHABVQModelIndex@@@Z @ 146 NONAME ; int RadioHistoryModel::rowCount(class QModelIndex const &) const
+	?region@RadioUiEngine@@QBE?AW4Region@RadioRegion@@XZ @ 147 NONAME ; enum RadioRegion::Region RadioUiEngine::region(void) const
+	?isInitialized@RadioUiEngine@@QBE_NXZ @ 148 NONAME ; bool RadioUiEngine::isInitialized(void) const
+	?stationsInRange@RadioStationModel@@QAE?AV?$QList@VRadioStation@@@@II@Z @ 149 NONAME ; class QList<class RadioStation> RadioStationModel::stationsInRange(unsigned int, unsigned int)
+	?emitAntennaStatusChanged@RadioUiEngine@@AAEX_N@Z @ 150 NONAME ; void RadioUiEngine::emitAntennaStatusChanged(bool)
+	?settings@RadioUiEngine@@QAEAAVRadioSettingsIf@@XZ @ 151 NONAME ; class RadioSettingsIf & RadioUiEngine::settings(void)
+	??_ERadioScannerEngine@@UAE@I@Z @ 152 NONAME ; RadioScannerEngine::~RadioScannerEngine(unsigned int)
+	?hasPiCode@RadioStation@@QBE_NXZ @ 153 NONAME ; bool RadioStation::hasPiCode(void) const
+	?rdsAvailabilityChanged@RadioUiEngine@@IAEX_N@Z @ 154 NONAME ; void RadioUiEngine::rdsAvailabilityChanged(bool)
+	?findPresetIndex@RadioStationModel@@QAEHHAAVRadioStation@@@Z @ 155 NONAME ; int RadioStationModel::findPresetIndex(int, class RadioStation &)
+	?stationHandlerIf@RadioStationModel@@QAEAAVRadioStationHandlerIf@@XZ @ 156 NONAME ; class RadioStationHandlerIf & RadioStationModel::stationHandlerIf(void)
+	?frequencyString@RadioStation@@QBE?AVQString@@XZ @ 157 NONAME ; class QString RadioStation::frequencyString(void) const
+	?reset@RadioStation@@AAEXXZ @ 158 NONAME ; void RadioStation::reset(void)
+	?createScannerEngine@RadioUiEngine@@QAE?AV?$QSharedPointer@VRadioScannerEngine@@@@XZ @ 159 NONAME ; class QSharedPointer<class RadioScannerEngine> RadioUiEngine::createScannerEngine(void)
+	?emitAudioRouteChanged@RadioUiEngine@@AAEX_N@Z @ 160 NONAME ; void RadioUiEngine::emitAudioRouteChanged(bool)
+	?d_func@RadioScannerEngine@@ABEPBVRadioScannerEnginePrivate@@XZ @ 161 NONAME ; class RadioScannerEnginePrivate const * RadioScannerEngine::d_func(void) const
+	?stationsRemoved@RadioStationModel@@IAEXABV?$QList@I@@@Z @ 162 NONAME ; void RadioStationModel::stationsRemoved(class QList<unsigned int> const &)
+	?toggleAudioRoute@RadioUiEngine@@QAEXXZ @ 163 NONAME ; void RadioUiEngine::toggleAudioRoute(void)
+	?unsetType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 164 NONAME ; void RadioStation::unsetType(class QFlags<enum RadioStation::TypeFlag>)
+	?findUnusedPresetIndex@RadioStationModel@@AAEHXZ @ 165 NONAME ; int RadioStationModel::findUnusedPresetIndex(void)
+	?getStaticMetaObject@RadioHistoryModel@@SAABUQMetaObject@@XZ @ 166 NONAME ; struct QMetaObject const & RadioHistoryModel::getStaticMetaObject(void)
+	?dynamicPsCheckEnded@RadioStationModel@@AAEXXZ @ 167 NONAME ; void RadioStationModel::dynamicPsCheckEnded(void)
+	?setFrequency@RadioStation@@AAEXI@Z @ 168 NONAME ; void RadioStation::setFrequency(unsigned int)
+	?seekStation@RadioUiEngine@@QAEXH@Z @ 169 NONAME ; void RadioUiEngine::seekStation(int)
+	?tunedToFrequency@RadioUiEngine@@IAEXIH@Z @ 170 NONAME ; void RadioUiEngine::tunedToFrequency(unsigned int, int)
+	?tr@RadioUiEngine@@SA?AVQString@@PBD0H@Z @ 171 NONAME ; class QString RadioUiEngine::tr(char const *, char const *, int)
+	?hasName@RadioStation@@QBE_NXZ @ 172 NONAME ; bool RadioStation::hasName(void) const
+	?removeByModelIndices@RadioHistoryModel@@QAEXAAV?$QList@VQModelIndex@@@@_N@Z @ 173 NONAME ; void RadioHistoryModel::removeByModelIndices(class QList<class QModelIndex> &, bool)
+	?trUtf8@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 174 NONAME ; class QString RadioHistoryModel::trUtf8(char const *, char const *, int)
+	?staticMetaObject@RadioScannerEngine@@2UQMetaObject@@B @ 175 NONAME ; struct QMetaObject const RadioScannerEngine::staticMetaObject
+	?data_ptr@RadioHistoryItem@@QAEAAV?$QSharedDataPointer@VRadioHistoryItemPrivate@@@@XZ @ 176 NONAME ; class QSharedDataPointer<class RadioHistoryItemPrivate> & RadioHistoryItem::data_ptr(void)
+	?setPiCode@RadioStation@@AAE_NHW4Region@RadioRegion@@@Z @ 177 NONAME ; bool RadioStation::setPiCode(int, enum RadioRegion::Region)
+	?radioText@RadioStation@@QBE?AVQString@@XZ @ 178 NONAME ; class QString RadioStation::radioText(void) const
+	?setData@RadioStationModel@@UAE_NABVQModelIndex@@ABVQVariant@@H@Z @ 179 NONAME ; bool RadioStationModel::setData(class QModelIndex const &, class QVariant const &, int)
+	?itemAtIndex@RadioHistoryModel@@QBE?AVRadioHistoryItem@@ABVQModelIndex@@@Z @ 180 NONAME ; class RadioHistoryItem RadioHistoryModel::itemAtIndex(class QModelIndex const &) const
+	?emitChangeSignals@RadioStationModel@@AAEXABVRadioStation@@V?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 181 NONAME ; void RadioStationModel::emitChangeSignals(class RadioStation const &, class QFlags<enum RadioStation::ChangeFlag>)
+	?hasUrl@RadioStation@@QBE_NXZ @ 182 NONAME ; bool RadioStation::hasUrl(void) const
+	?tr@RadioStationModel@@SA?AVQString@@PBD0H@Z @ 183 NONAME ; class QString RadioStationModel::tr(char const *, char const *, int)
+	?renameStation@RadioStationModel@@QAEXHABVQString@@@Z @ 184 NONAME ; void RadioStationModel::renameStation(int, class QString const &)
+	?emitItemAdded@RadioHistoryModel@@AAEXXZ @ 185 NONAME ; void RadioHistoryModel::emitItemAdded(void)
+	?currentFrequency@RadioUiEngine@@QBEIXZ @ 186 NONAME ; unsigned int RadioUiEngine::currentFrequency(void) const
+	?setUserDefinedName@RadioStation@@QAEXABVQString@@@Z @ 187 NONAME ; void RadioStation::setUserDefinedName(class QString const &)
+	?hasDynamicPs@RadioStation@@QBE_NXZ @ 188 NONAME ; bool RadioStation::hasDynamicPs(void) const
+	??1RadioStation@@UAE@XZ @ 189 NONAME ; RadioStation::~RadioStation(void)
+	?callSignString@RadioStation@@AAE?AVQString@@I@Z @ 190 NONAME ; class QString RadioStation::callSignString(unsigned int)
+	?getStaticMetaObject@RadioScannerEngine@@SAABUQMetaObject@@XZ @ 191 NONAME ; struct QMetaObject const & RadioScannerEngine::getStaticMetaObject(void)
+	?setChangeFlags@RadioStation@@AAEXV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 192 NONAME ; void RadioStation::setChangeFlags(class QFlags<enum RadioStation::ChangeFlag>)
+	?stationDataChanged@RadioStationModel@@IAEXABVRadioStation@@@Z @ 193 NONAME ; void RadioStationModel::stationDataChanged(class RadioStation const &)
+	?currentStation@RadioStationModel@@QAEAAVRadioStation@@XZ @ 194 NONAME ; class RadioStation & RadioStationModel::currentStation(void)
+	?genre@RadioStation@@QBEHXZ @ 195 NONAME ; int RadioStation::genre(void) const
+	?isDetached@RadioHistoryItem@@QBE_NXZ @ 196 NONAME ; bool RadioHistoryItem::isDetached(void) const
+	?startTimer@RadioUiEngine@@QAEXHHPAVQObject@@PBDVQVariant@@@Z @ 197 NONAME ; void RadioUiEngine::startTimer(int, int, class QObject *, char const *, class QVariant)
+	??0RadioStation@@QAE@XZ @ 198 NONAME ; RadioStation::RadioStation(void)
+	?findStation@RadioStationModel@@QBE?AVRadioStation@@IW4Criteria@FindCriteria@@@Z @ 199 NONAME ; class RadioStation RadioStationModel::findStation(unsigned int, enum FindCriteria::Criteria) const
+	??1RadioHistoryModel@@UAE@XZ @ 200 NONAME ; RadioHistoryModel::~RadioHistoryModel(void)
+	?isSongRecognitionAppAvailable@RadioUiEngine@@QAE_NXZ @ 201 NONAME ; bool RadioUiEngine::isSongRecognitionAppAvailable(void)
+	?isValid@RadioHistoryItem@@QBE_NXZ @ 202 NONAME ; bool RadioHistoryItem::isValid(void) const
+	?data@RadioHistoryModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 203 NONAME ; class QVariant RadioHistoryModel::data(class QModelIndex const &, int) const
+	?isAntennaAttached@RadioUiEngine@@QBE_NXZ @ 204 NONAME ; bool RadioUiEngine::isAntennaAttached(void) const
+	?emitRdsAvailabilityChanged@RadioUiEngine@@AAEX_N@Z @ 205 NONAME ; void RadioUiEngine::emitRdsAvailabilityChanged(bool)
+	?removeByModelIndices@RadioStationModel@@QAEXAAV?$QList@VQModelIndex@@@@_N@Z @ 206 NONAME ; void RadioStationModel::removeByModelIndices(class QList<class QModelIndex> &, bool)
+	?hasSentRds@RadioStation@@QBE_NXZ @ 207 NONAME ; bool RadioStation::hasSentRds(void) const
+	?presetIndex@RadioStation@@QBEHXZ @ 208 NONAME ; int RadioStation::presetIndex(void) const
+	?staticMetaObject@RadioStationModel@@2UQMetaObject@@B @ 209 NONAME ; struct QMetaObject const RadioStationModel::staticMetaObject
+	?currentSongReset@RadioHistoryModel@@IAEXXZ @ 210 NONAME ; void RadioHistoryModel::currentSongReset(void)
+	?isRenamed@RadioStation@@QBE_NXZ @ 211 NONAME ; bool RadioStation::isRenamed(void) const
+	?metaObject@RadioUiEngine@@UBEPBUQMetaObject@@XZ @ 212 NONAME ; struct QMetaObject const * RadioUiEngine::metaObject(void) const
+	?removeStation@RadioStationModel@@QAEXABVRadioStation@@@Z @ 213 NONAME ; void RadioStationModel::removeStation(class RadioStation const &)
+	?isUsingLoudspeaker@RadioUiEngine@@QBE_NXZ @ 214 NONAME ; bool RadioUiEngine::isUsingLoudspeaker(void) const
+	?removeByFrequency@RadioStationModel@@QAEXI@Z @ 215 NONAME ; void RadioStationModel::removeByFrequency(unsigned int)
+	??0RadioHistoryItem@@QAE@ABV0@@Z @ 216 NONAME ; RadioHistoryItem::RadioHistoryItem(class RadioHistoryItem const &)
+	?lastTunedFrequency@RadioUiEngine@@SAII@Z @ 217 NONAME ; unsigned int RadioUiEngine::lastTunedFrequency(unsigned int)
+	?removeAll@RadioHistoryModel@@QAEX_N@Z @ 218 NONAME ; void RadioHistoryModel::removeAll(bool)
+	?audioRouteChanged@RadioUiEngine@@IAEX_N@Z @ 219 NONAME ; void RadioUiEngine::audioRouteChanged(bool)
+	?tr@RadioHistoryModel@@SA?AVQString@@PBD0H@Z @ 220 NONAME ; class QString RadioHistoryModel::tr(char const *, char const *, int)
+	?setGenre@RadioStation@@AAEXH@Z @ 221 NONAME ; void RadioStation::setGenre(int)
+	?emitRadioStatusChanged@RadioUiEngine@@AAEX_N@Z @ 222 NONAME ; void RadioUiEngine::emitRadioStatusChanged(bool)
+	??0RadioScannerEngine@@QAE@AAVRadioUiEnginePrivate@@@Z @ 223 NONAME ; RadioScannerEngine::RadioScannerEngine(class RadioUiEnginePrivate &)
+	??_ERadioUiEngine@@UAE@I@Z @ 224 NONAME ; RadioUiEngine::~RadioUiEngine(unsigned int)
+	?findFrequency@RadioStationModel@@QBE_NIAAVRadioStation@@W4Criteria@FindCriteria@@@Z @ 225 NONAME ; bool RadioStationModel::findFrequency(unsigned int, class RadioStation &, enum FindCriteria::Criteria) const
+	?d_func@RadioStationModel@@AAEPAVRadioStationModelPrivate@@XZ @ 226 NONAME ; class RadioStationModelPrivate * RadioStationModel::d_func(void)
+	?setDetail@RadioStationModel@@QAEXV?$QFlags@W4DetailFlag@RadioStationModel@@@@@Z @ 227 NONAME ; void RadioStationModel::setDetail(class QFlags<enum RadioStationModel::DetailFlag>)
+	?artist@RadioHistoryItem@@QBE?AVQString@@XZ @ 228 NONAME ; class QString RadioHistoryItem::artist(void) const
+	?reportChangedData@RadioHistoryModel@@AAEXHH@Z @ 229 NONAME ; void RadioHistoryModel::reportChangedData(int, int)
+	?time@RadioHistoryItem@@QBE?AVQString@@XZ @ 230 NONAME ; class QString RadioHistoryItem::time(void) const
+	?isType@RadioStation@@QBE_NV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 231 NONAME ; bool RadioStation::isType(class QFlags<enum RadioStation::TypeFlag>) const
+	?volumeChanged@RadioUiEngine@@IAEXH@Z @ 232 NONAME ; void RadioUiEngine::volumeChanged(int)
+	?title@RadioHistoryItem@@QBE?AVQString@@XZ @ 233 NONAME ; class QString RadioHistoryItem::title(void) const
+	?powerOffRequested@RadioUiEngine@@IAEXXZ @ 234 NONAME ; void RadioUiEngine::powerOffRequested(void)
+	?qt_metacast@RadioScannerEngine@@UAEPAXPBD@Z @ 235 NONAME ; void * RadioScannerEngine::qt_metacast(char const *)
+	?antennaStatusChanged@RadioUiEngine@@IAEX_N@Z @ 236 NONAME ; void RadioUiEngine::antennaStatusChanged(bool)
+	??0RadioStation@@AAE@HI@Z @ 237 NONAME ; RadioStation::RadioStation(int, unsigned int)
+	?setFirstTimeStartPerformed@RadioUiEngine@@QAEX_N@Z @ 238 NONAME ; void RadioUiEngine::setFirstTimeStartPerformed(bool)
+	?qt_metacall@RadioStationModel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 239 NONAME ; int RadioStationModel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?hasDataChanged@RadioStation@@QBE_NV?$QFlags@W4ChangeFlag@RadioStation@@@@@Z @ 240 NONAME ; bool RadioStation::hasDataChanged(class QFlags<enum RadioStation::ChangeFlag>) const
+	?name@RadioStation@@QBE?AVQString@@XZ @ 241 NONAME ; class QString RadioStation::name(void) const
+	?data@RadioStationModel@@UBE?AVQVariant@@ABVQModelIndex@@H@Z @ 242 NONAME ; class QVariant RadioStationModel::data(class QModelIndex const &, int) const
+	?itemAdded@RadioHistoryModel@@IAEXXZ @ 243 NONAME ; void RadioHistoryModel::itemAdded(void)
+	?getStaticMetaObject@RadioUiEngine@@SAABUQMetaObject@@XZ @ 244 NONAME ; struct QMetaObject const & RadioUiEngine::getStaticMetaObject(void)
+	?launchSongRecognition@RadioUiEngine@@QAEXXZ @ 245 NONAME ; void RadioUiEngine::launchSongRecognition(void)
+	?iterateCallSign@RadioStation@@AAE?AVQString@@HH@Z @ 246 NONAME ; class QString RadioStation::iterateCallSign(int, int)
+	?piCode@RadioStation@@QBEHXZ @ 247 NONAME ; int RadioStation::piCode(void) const
+	??0RadioUiEngine@@QAE@PAVQObject@@@Z @ 248 NONAME ; RadioUiEngine::RadioUiEngine(class QObject *)
+	?hasRadiotext@RadioStation@@QBE_NXZ @ 249 NONAME ; bool RadioStation::hasRadiotext(void) const
+	?setCurrentTime@RadioHistoryItem@@QAEXXZ @ 250 NONAME ; void RadioHistoryItem::setCurrentTime(void)
+	?isTagged@RadioHistoryItem@@QBE_NXZ @ 251 NONAME ; bool RadioHistoryItem::isTagged(void) const
+	?minFrequency@RadioUiEngine@@QBEIXZ @ 252 NONAME ; unsigned int RadioUiEngine::minFrequency(void) const
+	?rtPlusCheckEnd@RadioStationModel@@AAEXXZ @ 253 NONAME ; void RadioStationModel::rtPlusCheckEnd(void)
+	?setShowTagged@RadioHistoryModel@@QAEX_N@Z @ 254 NONAME ; void RadioHistoryModel::setShowTagged(bool)
+	?isFavorite@RadioStation@@QBE_NXZ @ 255 NONAME ; bool RadioStation::isFavorite(void) const
+	?radioTextReceived@RadioStationModel@@IAEXABVRadioStation@@@Z @ 256 NONAME ; void RadioStationModel::radioTextReceived(class RadioStation const &)
+	?seekingStarted@RadioUiEngine@@IAEXH@Z @ 257 NONAME ; void RadioUiEngine::seekingStarted(int)
+	?isRecognizedByRds@RadioHistoryItem@@QBE_NXZ @ 258 NONAME ; bool RadioHistoryItem::isRecognizedByRds(void) const
+	?emitSeekingStarted@RadioUiEngine@@AAEXW4Direction@Seek@@@Z @ 259 NONAME ; void RadioUiEngine::emitSeekingStarted(enum Seek::Direction)
+	??_ERadioStationModel@@UAE@I@Z @ 260 NONAME ; RadioStationModel::~RadioStationModel(unsigned int)
 
--- a/radioapp/bwins/fmradiowidgetsu.def	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/bwins/fmradiowidgetsu.def	Fri Oct 15 16:26:27 2010 +0300
@@ -16,45 +16,45 @@
 	?skipRequested@RadioStationCarousel@@IAEXH@Z @ 15 NONAME ; void RadioStationCarousel::skipRequested(int)
 	?setTextWithoutFading@RadioFadingLabel@@QAEXABVQString@@@Z @ 16 NONAME ; void RadioFadingLabel::setTextWithoutFading(class QString const &)
 	?updateAntennaStatus@RadioWindow@@AAEX_N@Z @ 17 NONAME ; void RadioWindow::updateAntennaStatus(bool)
-	?handleIconClicked@RadioStationCarousel@@EAEXABVRadioStation@@@Z @ 18 NONAME ; void RadioStationCarousel::handleIconClicked(class RadioStation const &)
-	?init@RadioFrequencyStrip@@QAEXPAVRadioUiEngine@@AAVRadioUiLoader@@@Z @ 19 NONAME ; void RadioFrequencyStrip::init(class RadioUiEngine *, class RadioUiLoader &)
-	?qt_metacall@RadioStationCarousel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 20 NONAME ; int RadioStationCarousel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?isInitialized@RadioStationCarousel@@ABE_NXZ @ 21 NONAME ; bool RadioStationCarousel::isInitialized(void) const
-	?init@RadioStationCarousel@@QAEXAAVRadioUiLoader@@PAVRadioUiEngine@@@Z @ 22 NONAME ; void RadioStationCarousel::init(class RadioUiLoader &, class RadioUiEngine *)
-	?scrollPosChanged@RadioStationCarousel@@AAEXABVQPointF@@@Z @ 23 NONAME ; void RadioStationCarousel::scrollPosChanged(class QPointF const &)
-	?frequencyChanged@RadioFrequencyStrip@@IAEXIHH@Z @ 24 NONAME ; void RadioFrequencyStrip::frequencyChanged(unsigned int, int, int)
-	?setAutoScrollTime@RadioStationCarousel@@QAEXH@Z @ 25 NONAME ; void RadioStationCarousel::setAutoScrollTime(int)
-	?prevIndex@RadioStationCarousel@@AAEHH@Z @ 26 NONAME ; int RadioStationCarousel::prevIndex(int)
-	?skipToPreviousFavorite@RadioFrequencyStrip@@EAEXXZ @ 27 NONAME ; void RadioFrequencyStrip::skipToPreviousFavorite(void)
-	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 28 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *)
-	?tr@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 29 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *)
-	?skip@RadioStationCarousel@@AAEXW4Mode@StationSkip@@@Z @ 30 NONAME ; void RadioStationCarousel::skip(enum StationSkip::Mode)
-	?emitFrequencyChanged@RadioFrequencyStrip@@EAEXIHH@Z @ 31 NONAME ; void RadioFrequencyStrip::emitFrequencyChanged(unsigned int, int, int)
-	?isScanning@RadioFrequencyStrip@@EBE_NXZ @ 32 NONAME ; bool RadioFrequencyStrip::isScanning(void) const
-	??1RadioWindow@@UAE@XZ @ 33 NONAME ; RadioWindow::~RadioWindow(void)
-	?skipRequested@RadioFrequencyStrip@@IAEXH@Z @ 34 NONAME ; void RadioFrequencyStrip::skipRequested(int)
-	?setText@RadioFadingLabel@@QAEXABVQString@@@Z @ 35 NONAME ; void RadioFadingLabel::setText(class QString const &)
-	?showEvent@RadioStationCarousel@@EAEXPAVQShowEvent@@@Z @ 36 NONAME ; void RadioStationCarousel::showEvent(class QShowEvent *)
-	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 37 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *)
-	?activateView@RadioWindow@@AAEXPAVRadioViewBase@@ABVQString@@V?$QFlags@W4ViewSwitchFlag@Hb@@@@@Z @ 38 NONAME ; void RadioWindow::activateView(class RadioViewBase *, class QString const &, class QFlags<enum Hb::ViewSwitchFlag>)
-	?calculateDifference@RadioStationCarousel@@AAEHHAAW4Direction@Scroll@@@Z @ 39 NONAME ; int RadioStationCarousel::calculateDifference(int, enum Scroll::Direction &)
-	?orientationSection@RadioWindow@@QAE?AVQString@@XZ @ 40 NONAME ; class QString RadioWindow::orientationSection(void)
-	??1RadioFrequencyStrip@@UAE@XZ @ 41 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(void)
-	?cancelAnimation@RadioStationCarousel@@QAEXXZ @ 42 NONAME ; void RadioStationCarousel::cancelAnimation(void)
-	?staticMetaObject@RadioStationCarousel@@2UQMetaObject@@B @ 43 NONAME ; struct QMetaObject const RadioStationCarousel::staticMetaObject
-	?skipToPrevious@RadioFrequencyStrip@@EAEXXZ @ 44 NONAME ; void RadioFrequencyStrip::skipToPrevious(void)
-	?qt_metacall@RadioFadingLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 45 NONAME ; int RadioFadingLabel::qt_metacall(enum QMetaObject::Call, int, void * *)
-	??0RadioFrequencyStrip@@QAE@XZ @ 46 NONAME ; RadioFrequencyStrip::RadioFrequencyStrip(void)
-	?setCenterIndex@RadioStationCarousel@@AAEXHV?$QFlags@W4ScrollFlag@RadioStationCarousel@@@@@Z @ 47 NONAME ; void RadioStationCarousel::setCenterIndex(int, class QFlags<enum RadioStationCarousel::ScrollFlag>)
-	?resizeEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 48 NONAME ; void RadioStationCarousel::resizeEvent(class QGraphicsSceneResizeEvent *)
-	?updateStations@RadioStationCarousel@@AAEXXZ @ 49 NONAME ; void RadioStationCarousel::updateStations(void)
-	??_ERadioWindow@@UAE@I@Z @ 50 NONAME ; RadioWindow::~RadioWindow(unsigned int)
-	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 51 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *)
-	?metaObject@RadioFrequencyStrip@@UBEPBUQMetaObject@@XZ @ 52 NONAME ; struct QMetaObject const * RadioFrequencyStrip::metaObject(void) const
-	?qt_metacall@RadioFrequencyStrip@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 53 NONAME ; int RadioFrequencyStrip::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?qt_metacall@RadioWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 54 NONAME ; int RadioWindow::qt_metacall(enum QMetaObject::Call, int, void * *)
-	?startEffect@RadioFadingLabel@@AAEXABVQString@@PBD@Z @ 55 NONAME ; void RadioFadingLabel::startEffect(class QString const &, char const *)
-	?seekDown@RadioFrequencyStrip@@EAEXXZ @ 56 NONAME ; void RadioFrequencyStrip::seekDown(void)
+	?init@RadioFrequencyStrip@@QAEXPAVRadioUiEngine@@AAVRadioUiLoader@@@Z @ 18 NONAME ; void RadioFrequencyStrip::init(class RadioUiEngine *, class RadioUiLoader &)
+	?qt_metacall@RadioStationCarousel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 19 NONAME ; int RadioStationCarousel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?isInitialized@RadioStationCarousel@@ABE_NXZ @ 20 NONAME ; bool RadioStationCarousel::isInitialized(void) const
+	?init@RadioStationCarousel@@QAEXAAVRadioUiLoader@@PAVRadioUiEngine@@@Z @ 21 NONAME ; void RadioStationCarousel::init(class RadioUiLoader &, class RadioUiEngine *)
+	?scrollPosChanged@RadioStationCarousel@@AAEXABVQPointF@@@Z @ 22 NONAME ; void RadioStationCarousel::scrollPosChanged(class QPointF const &)
+	?frequencyChanged@RadioFrequencyStrip@@IAEXIHH@Z @ 23 NONAME ; void RadioFrequencyStrip::frequencyChanged(unsigned int, int, int)
+	?setAutoScrollTime@RadioStationCarousel@@QAEXH@Z @ 24 NONAME ; void RadioStationCarousel::setAutoScrollTime(int)
+	?prevIndex@RadioStationCarousel@@AAEHH@Z @ 25 NONAME ; int RadioStationCarousel::prevIndex(int)
+	?skipToPreviousFavorite@RadioFrequencyStrip@@EAEXXZ @ 26 NONAME ; void RadioFrequencyStrip::skipToPreviousFavorite(void)
+	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 27 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *)
+	?tr@RadioStationCarousel@@SA?AVQString@@PBD0@Z @ 28 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *)
+	?skip@RadioStationCarousel@@AAEXW4Mode@StationSkip@@@Z @ 29 NONAME ; void RadioStationCarousel::skip(enum StationSkip::Mode)
+	?emitFrequencyChanged@RadioFrequencyStrip@@EAEXIHH@Z @ 30 NONAME ; void RadioFrequencyStrip::emitFrequencyChanged(unsigned int, int, int)
+	?isScanning@RadioFrequencyStrip@@EBE_NXZ @ 31 NONAME ; bool RadioFrequencyStrip::isScanning(void) const
+	??1RadioWindow@@UAE@XZ @ 32 NONAME ; RadioWindow::~RadioWindow(void)
+	?skipRequested@RadioFrequencyStrip@@IAEXH@Z @ 33 NONAME ; void RadioFrequencyStrip::skipRequested(int)
+	?setText@RadioFadingLabel@@QAEXABVQString@@@Z @ 34 NONAME ; void RadioFadingLabel::setText(class QString const &)
+	?showEvent@RadioStationCarousel@@EAEXPAVQShowEvent@@@Z @ 35 NONAME ; void RadioStationCarousel::showEvent(class QShowEvent *)
+	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 36 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *)
+	?activateView@RadioWindow@@AAEXPAVRadioViewBase@@ABVQString@@V?$QFlags@W4ViewSwitchFlag@Hb@@@@@Z @ 37 NONAME ; void RadioWindow::activateView(class RadioViewBase *, class QString const &, class QFlags<enum Hb::ViewSwitchFlag>)
+	?calculateDifference@RadioStationCarousel@@AAEHHAAW4Direction@Scroll@@@Z @ 38 NONAME ; int RadioStationCarousel::calculateDifference(int, enum Scroll::Direction &)
+	?orientationSection@RadioWindow@@QAE?AVQString@@XZ @ 39 NONAME ; class QString RadioWindow::orientationSection(void)
+	??1RadioFrequencyStrip@@UAE@XZ @ 40 NONAME ; RadioFrequencyStrip::~RadioFrequencyStrip(void)
+	?cancelAnimation@RadioStationCarousel@@QAEXXZ @ 41 NONAME ; void RadioStationCarousel::cancelAnimation(void)
+	?staticMetaObject@RadioStationCarousel@@2UQMetaObject@@B @ 42 NONAME ; struct QMetaObject const RadioStationCarousel::staticMetaObject
+	?skipToPrevious@RadioFrequencyStrip@@EAEXXZ @ 43 NONAME ; void RadioFrequencyStrip::skipToPrevious(void)
+	?qt_metacall@RadioFadingLabel@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 44 NONAME ; int RadioFadingLabel::qt_metacall(enum QMetaObject::Call, int, void * *)
+	??0RadioFrequencyStrip@@QAE@XZ @ 45 NONAME ; RadioFrequencyStrip::RadioFrequencyStrip(void)
+	?setCenterIndex@RadioStationCarousel@@AAEXHV?$QFlags@W4ScrollFlag@RadioStationCarousel@@@@@Z @ 46 NONAME ; void RadioStationCarousel::setCenterIndex(int, class QFlags<enum RadioStationCarousel::ScrollFlag>)
+	?resizeEvent@RadioStationCarousel@@EAEXPAVQGraphicsSceneResizeEvent@@@Z @ 47 NONAME ; void RadioStationCarousel::resizeEvent(class QGraphicsSceneResizeEvent *)
+	?updateStations@RadioStationCarousel@@AAEXXZ @ 48 NONAME ; void RadioStationCarousel::updateStations(void)
+	??_ERadioWindow@@UAE@I@Z @ 49 NONAME ; RadioWindow::~RadioWindow(unsigned int)
+	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0@Z @ 50 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *)
+	?metaObject@RadioFrequencyStrip@@UBEPBUQMetaObject@@XZ @ 51 NONAME ; struct QMetaObject const * RadioFrequencyStrip::metaObject(void) const
+	?qt_metacall@RadioFrequencyStrip@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 52 NONAME ; int RadioFrequencyStrip::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?qt_metacall@RadioWindow@@UAEHW4Call@QMetaObject@@HPAPAX@Z @ 53 NONAME ; int RadioWindow::qt_metacall(enum QMetaObject::Call, int, void * *)
+	?startEffect@RadioFadingLabel@@AAEXABVQString@@PBD@Z @ 54 NONAME ; void RadioFadingLabel::startEffect(class QString const &, char const *)
+	?seekDown@RadioFrequencyStrip@@EAEXXZ @ 55 NONAME ; void RadioFrequencyStrip::seekDown(void)
+	?isAntennaAttached@RadioStationCarousel@@UBE_NXZ @ 56 NONAME ; bool RadioStationCarousel::isAntennaAttached(void) const
 	?activateHistoryView@RadioWindow@@QAEXXZ @ 57 NONAME ; void RadioWindow::activateHistoryView(void)
 	??_ERadioStationCarousel@@UAE@I@Z @ 58 NONAME ; RadioStationCarousel::~RadioStationCarousel(unsigned int)
 	?tr@RadioFadingLabel@@SA?AVQString@@PBD0@Z @ 59 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *)
@@ -81,20 +81,20 @@
 	?seekUp@RadioFrequencyStrip@@EAEXXZ @ 80 NONAME ; void RadioFrequencyStrip::seekUp(void)
 	??0RadioWindow@@QAE@PAVQWidget@@@Z @ 81 NONAME ; RadioWindow::RadioWindow(class QWidget *)
 	?tr@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 82 NONAME ; class QString RadioFadingLabel::tr(char const *, char const *, int)
-	?updateRadioText@RadioStationCarousel@@AAEXABVRadioStation@@@Z @ 83 NONAME ; void RadioStationCarousel::updateRadioText(class RadioStation const &)
-	?updateAntennaStatus@RadioStationCarousel@@QAEX_N@Z @ 84 NONAME ; void RadioStationCarousel::updateAntennaStatus(bool)
-	?setFrequency@RadioStationCarousel@@QAEXIHW4Direction@Scroll@@@Z @ 85 NONAME ; void RadioStationCarousel::setFrequency(unsigned int, int, enum Scroll::Direction)
-	?setInfoText@RadioStationCarousel@@QAEXW4Type@CarouselInfoText@@@Z @ 86 NONAME ; void RadioStationCarousel::setInfoText(enum CarouselInfoText::Type)
-	?staticMetaObject@RadioFadingLabel@@2UQMetaObject@@B @ 87 NONAME ; struct QMetaObject const RadioFadingLabel::staticMetaObject
-	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 88 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *, int)
-	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 89 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *, int)
-	?getStaticMetaObject@RadioStationCarousel@@SAABUQMetaObject@@XZ @ 90 NONAME ; struct QMetaObject const & RadioStationCarousel::getStaticMetaObject(void)
-	?metaObject@RadioFadingLabel@@UBEPBUQMetaObject@@XZ @ 91 NONAME ; struct QMetaObject const * RadioFadingLabel::metaObject(void) const
-	?metaObject@RadioWindow@@UBEPBUQMetaObject@@XZ @ 92 NONAME ; struct QMetaObject const * RadioWindow::metaObject(void) const
-	?staticMetaObject@RadioFrequencyStrip@@2UQMetaObject@@B @ 93 NONAME ; struct QMetaObject const RadioFrequencyStrip::staticMetaObject
-	?autoScrollTime@RadioStationCarousel@@QBEHXZ @ 94 NONAME ; int RadioStationCarousel::autoScrollTime(void) const
-	?qt_metacast@RadioStationCarousel@@UAEPAXPBD@Z @ 95 NONAME ; void * RadioStationCarousel::qt_metacast(char const *)
-	?skipToNextFavorite@RadioFrequencyStrip@@EAEXXZ @ 96 NONAME ; void RadioFrequencyStrip::skipToNextFavorite(void)
+	?updateAntennaStatus@RadioStationCarousel@@QAEX_N@Z @ 83 NONAME ; void RadioStationCarousel::updateAntennaStatus(bool)
+	?setFrequency@RadioStationCarousel@@QAEXIHW4Direction@Scroll@@@Z @ 84 NONAME ; void RadioStationCarousel::setFrequency(unsigned int, int, enum Scroll::Direction)
+	?setInfoText@RadioStationCarousel@@QAEXW4Type@CarouselInfoText@@@Z @ 85 NONAME ; void RadioStationCarousel::setInfoText(enum CarouselInfoText::Type)
+	?staticMetaObject@RadioFadingLabel@@2UQMetaObject@@B @ 86 NONAME ; struct QMetaObject const RadioFadingLabel::staticMetaObject
+	?tr@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 87 NONAME ; class QString RadioFrequencyStrip::tr(char const *, char const *, int)
+	?trUtf8@RadioFrequencyStrip@@SA?AVQString@@PBD0H@Z @ 88 NONAME ; class QString RadioFrequencyStrip::trUtf8(char const *, char const *, int)
+	?getStaticMetaObject@RadioStationCarousel@@SAABUQMetaObject@@XZ @ 89 NONAME ; struct QMetaObject const & RadioStationCarousel::getStaticMetaObject(void)
+	?metaObject@RadioFadingLabel@@UBEPBUQMetaObject@@XZ @ 90 NONAME ; struct QMetaObject const * RadioFadingLabel::metaObject(void) const
+	?metaObject@RadioWindow@@UBEPBUQMetaObject@@XZ @ 91 NONAME ; struct QMetaObject const * RadioWindow::metaObject(void) const
+	?staticMetaObject@RadioFrequencyStrip@@2UQMetaObject@@B @ 92 NONAME ; struct QMetaObject const RadioFrequencyStrip::staticMetaObject
+	?autoScrollTime@RadioStationCarousel@@QBEHXZ @ 93 NONAME ; int RadioStationCarousel::autoScrollTime(void) const
+	?qt_metacast@RadioStationCarousel@@UAEPAXPBD@Z @ 94 NONAME ; void * RadioStationCarousel::qt_metacast(char const *)
+	?skipToNextFavorite@RadioFrequencyStrip@@EAEXXZ @ 95 NONAME ; void RadioFrequencyStrip::skipToNextFavorite(void)
+	?handleIconClicked@RadioStationCarousel@@EAEXI@Z @ 96 NONAME ; void RadioStationCarousel::handleIconClicked(unsigned int)
 	?tr@RadioWindow@@SA?AVQString@@PBD0H@Z @ 97 NONAME ; class QString RadioWindow::tr(char const *, char const *, int)
 	?seekRequested@RadioFrequencyStrip@@IAEXH@Z @ 98 NONAME ; void RadioFrequencyStrip::seekRequested(int)
 	??0RadioStationCarousel@@QAE@PAVQGraphicsItem@@@Z @ 99 NONAME ; RadioStationCarousel::RadioStationCarousel(class QGraphicsItem *)
@@ -107,26 +107,25 @@
 	?trUtf8@RadioFadingLabel@@SA?AVQString@@PBD0H@Z @ 106 NONAME ; class QString RadioFadingLabel::trUtf8(char const *, char const *, int)
 	?uiEngine@RadioStationCarousel@@QAEPAVRadioUiEngine@@XZ @ 107 NONAME ; class RadioUiEngine * RadioStationCarousel::uiEngine(void)
 	?setLandscape@RadioStationCarousel@@QAEX_N@Z @ 108 NONAME ; void RadioStationCarousel::setLandscape(bool)
-	?setScanningMode@RadioStationCarousel@@QAEX_N@Z @ 109 NONAME ; void RadioStationCarousel::setScanningMode(bool)
-	??1RadioFadingLabel@@UAE@XZ @ 110 NONAME ; RadioFadingLabel::~RadioFadingLabel(void)
-	?setNonFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 111 NONAME ; void RadioStationCarousel::setNonFavoriteIcon(class HbIcon const &)
-	?isInScanningMode@RadioStationCarousel@@QBE_NXZ @ 112 NONAME ; bool RadioStationCarousel::isInScanningMode(void) const
-	?isAntennaAttached@RadioStationCarousel@@QBE_NXZ @ 113 NONAME ; bool RadioStationCarousel::isAntennaAttached(void) const
-	?activateStationsView@RadioWindow@@QAEXXZ @ 114 NONAME ; void RadioWindow::activateStationsView(void)
-	?tr@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 115 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *, int)
-	?setFrequency@RadioFrequencyStrip@@UAEXIHW4Direction@Scroll@@@Z @ 116 NONAME ; void RadioFrequencyStrip::setFrequency(unsigned int, int, enum Scroll::Direction)
-	?frequencyChanged@RadioStationCarousel@@IAEXIHH@Z @ 117 NONAME ; void RadioStationCarousel::frequencyChanged(unsigned int, int, int)
-	?trimIndex@RadioStationCarousel@@AAEHH@Z @ 118 NONAME ; int RadioStationCarousel::trimIndex(int)
-	?initView@RadioWindow@@AAEXXZ @ 119 NONAME ; void RadioWindow::initView(void)
-	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 120 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *, int)
-	??_ERadioFadingLabel@@UAE@I@Z @ 121 NONAME ; RadioFadingLabel::~RadioFadingLabel(unsigned int)
-	?init@RadioWindow@@QAEXXZ @ 122 NONAME ; void RadioWindow::init(void)
-	?isScrollingAllowed@RadioStationCarousel@@ABE_NXZ @ 123 NONAME ; bool RadioStationCarousel::isScrollingAllowed(void) const
-	?qt_metacast@RadioFrequencyStrip@@UAEPAXPBD@Z @ 124 NONAME ; void * RadioFrequencyStrip::qt_metacast(char const *)
-	?staticMetaObject@RadioWindow@@2UQMetaObject@@B @ 125 NONAME ; struct QMetaObject const RadioWindow::staticMetaObject
-	?cleanRdsData@RadioStationCarousel@@QAEXXZ @ 126 NONAME ; void RadioStationCarousel::cleanRdsData(void)
-	?clearInfoText@RadioStationCarousel@@QAEXXZ @ 127 NONAME ; void RadioStationCarousel::clearInfoText(void)
-	?adjustPos@RadioStationCarousel@@AAEXH@Z @ 128 NONAME ; void RadioStationCarousel::adjustPos(int)
-	?frequencyAtIndex@RadioFrequencyStrip@@EBEIH@Z @ 129 NONAME ; unsigned int RadioFrequencyStrip::frequencyAtIndex(int) const
-	?scanAnimationFinished@RadioStationCarousel@@IAEXXZ @ 130 NONAME ; void RadioStationCarousel::scanAnimationFinished(void)
+	??1RadioFadingLabel@@UAE@XZ @ 109 NONAME ; RadioFadingLabel::~RadioFadingLabel(void)
+	?setNonFavoriteIcon@RadioStationCarousel@@QAEXABVHbIcon@@@Z @ 110 NONAME ; void RadioStationCarousel::setNonFavoriteIcon(class HbIcon const &)
+	?isInScanningMode@RadioStationCarousel@@QBE_NXZ @ 111 NONAME ; bool RadioStationCarousel::isInScanningMode(void) const
+	?activateStationsView@RadioWindow@@QAEXXZ @ 112 NONAME ; void RadioWindow::activateStationsView(void)
+	?tr@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 113 NONAME ; class QString RadioStationCarousel::tr(char const *, char const *, int)
+	?setFrequency@RadioFrequencyStrip@@UAEXIHW4Direction@Scroll@@@Z @ 114 NONAME ; void RadioFrequencyStrip::setFrequency(unsigned int, int, enum Scroll::Direction)
+	?frequencyChanged@RadioStationCarousel@@IAEXIHH@Z @ 115 NONAME ; void RadioStationCarousel::frequencyChanged(unsigned int, int, int)
+	?trimIndex@RadioStationCarousel@@AAEHH@Z @ 116 NONAME ; int RadioStationCarousel::trimIndex(int)
+	?initView@RadioWindow@@AAEXXZ @ 117 NONAME ; void RadioWindow::initView(void)
+	?trUtf8@RadioStationCarousel@@SA?AVQString@@PBD0H@Z @ 118 NONAME ; class QString RadioStationCarousel::trUtf8(char const *, char const *, int)
+	??_ERadioFadingLabel@@UAE@I@Z @ 119 NONAME ; RadioFadingLabel::~RadioFadingLabel(unsigned int)
+	?init@RadioWindow@@QAEXXZ @ 120 NONAME ; void RadioWindow::init(void)
+	?isScrollingAllowed@RadioStationCarousel@@ABE_NXZ @ 121 NONAME ; bool RadioStationCarousel::isScrollingAllowed(void) const
+	?qt_metacast@RadioFrequencyStrip@@UAEPAXPBD@Z @ 122 NONAME ; void * RadioFrequencyStrip::qt_metacast(char const *)
+	?setScanningMode@RadioStationCarousel@@QAEXW4Status@Scan@@@Z @ 123 NONAME ; void RadioStationCarousel::setScanningMode(enum Scan::Status)
+	?staticMetaObject@RadioWindow@@2UQMetaObject@@B @ 124 NONAME ; struct QMetaObject const RadioWindow::staticMetaObject
+	?cleanRdsData@RadioStationCarousel@@QAEXXZ @ 125 NONAME ; void RadioStationCarousel::cleanRdsData(void)
+	?clearInfoText@RadioStationCarousel@@QAEXXZ @ 126 NONAME ; void RadioStationCarousel::clearInfoText(void)
+	?adjustPos@RadioStationCarousel@@AAEXH@Z @ 127 NONAME ; void RadioStationCarousel::adjustPos(int)
+	?frequencyAtIndex@RadioFrequencyStrip@@EBEIH@Z @ 128 NONAME ; unsigned int RadioFrequencyStrip::frequencyAtIndex(int) const
+	?scanAnimationFinished@RadioStationCarousel@@IAEXXZ @ 129 NONAME ; void RadioStationCarousel::scanAnimationFinished(void)
 
--- a/radioapp/eabi/fmradiouiengineu.def	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/eabi/fmradiouiengineu.def	Fri Oct 15 16:26:27 2010 +0300
@@ -11,102 +11,102 @@
 	_ZN12RadioStation16piCodeToCallSignEj @ 10 NONAME
 	_ZN12RadioStation16resetChangeFlagsEv @ 11 NONAME
 	_ZN12RadioStation16setDynamicPsTextERK7QString @ 12 NONAME
-	_ZN12RadioStation16setRadioTextPlusEiRK7QString @ 13 NONAME
-	_ZN12RadioStation18setUserDefinedNameERK7QString @ 14 NONAME
-	_ZN12RadioStation5resetEv @ 15 NONAME
-	_ZN12RadioStation6setUrlERK7QString @ 16 NONAME
-	_ZN12RadioStation7setNameERK7QString @ 17 NONAME
-	_ZN12RadioStation7setTypeE6QFlagsINS_8TypeFlagEE @ 18 NONAME
-	_ZN12RadioStation8setGenreEi @ 19 NONAME
-	_ZN12RadioStation9setPiCodeEiN11RadioRegion6RegionE @ 20 NONAME
-	_ZN12RadioStation9setPsTypeE6QFlagsINS_10PsTypeFlagEE @ 21 NONAME
-	_ZN12RadioStation9unsetTypeE6QFlagsINS_8TypeFlagEE @ 22 NONAME
-	_ZN12RadioStationC1ERKS_ @ 23 NONAME
-	_ZN12RadioStationC1Eij @ 24 NONAME
-	_ZN12RadioStationC1Ev @ 25 NONAME
-	_ZN12RadioStationC2ERKS_ @ 26 NONAME
-	_ZN12RadioStationC2Eij @ 27 NONAME
-	_ZN12RadioStationC2Ev @ 28 NONAME
-	_ZN12RadioStationD0Ev @ 29 NONAME
-	_ZN12RadioStationD1Ev @ 30 NONAME
-	_ZN12RadioStationD2Ev @ 31 NONAME
-	_ZN12RadioStationaSERKS_ @ 32 NONAME
-	_ZN13RadioUiEngine10lastVolumeEv @ 33 NONAME
-	_ZN13RadioUiEngine10setPowerOnEv @ 34 NONAME
+	_ZN12RadioStation18setUserDefinedNameERK7QString @ 13 NONAME
+	_ZN12RadioStation5resetEv @ 14 NONAME
+	_ZN12RadioStation6setUrlERK7QString @ 15 NONAME
+	_ZN12RadioStation7setNameERK7QString @ 16 NONAME
+	_ZN12RadioStation7setTypeE6QFlagsINS_8TypeFlagEE @ 17 NONAME
+	_ZN12RadioStation8setGenreEi @ 18 NONAME
+	_ZN12RadioStation9setPiCodeEiN11RadioRegion6RegionE @ 19 NONAME
+	_ZN12RadioStation9setPsTypeE6QFlagsINS_10PsTypeFlagEE @ 20 NONAME
+	_ZN12RadioStation9unsetTypeE6QFlagsINS_8TypeFlagEE @ 21 NONAME
+	_ZN12RadioStationC1ERKS_ @ 22 NONAME
+	_ZN12RadioStationC1Eij @ 23 NONAME
+	_ZN12RadioStationC1Ev @ 24 NONAME
+	_ZN12RadioStationC2ERKS_ @ 25 NONAME
+	_ZN12RadioStationC2Eij @ 26 NONAME
+	_ZN12RadioStationC2Ev @ 27 NONAME
+	_ZN12RadioStationD0Ev @ 28 NONAME
+	_ZN12RadioStationD1Ev @ 29 NONAME
+	_ZN12RadioStationD2Ev @ 30 NONAME
+	_ZN12RadioStationaSERKS_ @ 31 NONAME
+	_ZN13RadioUiEngine10lastVolumeEv @ 32 NONAME
+	_ZN13RadioUiEngine10setPowerOnEv @ 33 NONAME
+	_ZN13RadioUiEngine10startTimerEiiP7QObjectPKc8QVariant @ 34 NONAME
 	_ZN13RadioUiEngine10toggleMuteEv @ 35 NONAME
-	_ZN13RadioUiEngine11muteChangedEb @ 36 NONAME
-	_ZN13RadioUiEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 37 NONAME
-	_ZN13RadioUiEngine11qt_metacastEPKc @ 38 NONAME
-	_ZN13RadioUiEngine11seekStationEi @ 39 NONAME
-	_ZN13RadioUiEngine11setPowerOffEi @ 40 NONAME
-	_ZN13RadioUiEngine11skipStationEN11StationSkip4ModeEji @ 41 NONAME
-	_ZN13RadioUiEngine12historyModelEv @ 42 NONAME
-	_ZN13RadioUiEngine12setFrequencyEji @ 43 NONAME
-	_ZN13RadioUiEngine12stationModelEv @ 44 NONAME
-	_ZN13RadioUiEngine13genreToStringEiN11GenreTarget6TargetE @ 45 NONAME
-	_ZN13RadioUiEngine13launchBrowserERK7QString @ 46 NONAME
-	_ZN13RadioUiEngine13scannerEngineEv @ 47 NONAME
-	_ZN13RadioUiEngine13volumeChangedEi @ 48 NONAME
-	_ZN13RadioUiEngine14openMusicStoreERK16RadioHistoryItemNS_10MusicStoreE @ 49 NONAME
-	_ZN13RadioUiEngine14seekingStartedEi @ 50 NONAME
-	_ZN13RadioUiEngine15emitMuteChangedEb @ 51 NONAME
-	_ZN13RadioUiEngine15stationsInRangeEjj @ 52 NONAME
-	_ZN13RadioUiEngine16isFirstTimeStartEv @ 53 NONAME
-	_ZN13RadioUiEngine16staticMetaObjectE @ 54 NONAME DATA 16
-	_ZN13RadioUiEngine16toggleAudioRouteEv @ 55 NONAME
-	_ZN13RadioUiEngine16tunedToFrequencyEji @ 56 NONAME
-	_ZN13RadioUiEngine17addRecognizedSongERK7QStringS2_RK12RadioStation @ 57 NONAME
-	_ZN13RadioUiEngine17audioRouteChangedEb @ 58 NONAME
-	_ZN13RadioUiEngine17emitVolumeChangedEi @ 59 NONAME
-	_ZN13RadioUiEngine17launchRadioServerEv @ 60 NONAME
-	_ZN13RadioUiEngine17powerOffRequestedEv @ 61 NONAME
-	_ZN13RadioUiEngine17setManualSeekModeEb @ 62 NONAME
-	_ZN13RadioUiEngine18emitSeekingStartedEN4Seek9DirectionE @ 63 NONAME
-	_ZN13RadioUiEngine18lastTunedFrequencyEj @ 64 NONAME
-	_ZN13RadioUiEngine18radioStatusChangedEb @ 65 NONAME
-	_ZN13RadioUiEngine19createScannerEngineEv @ 66 NONAME
-	_ZN13RadioUiEngine19getStaticMetaObjectEv @ 67 NONAME
-	_ZN13RadioUiEngine20antennaStatusChangedEb @ 68 NONAME
-	_ZN13RadioUiEngine20emitTunedToFrequencyEji @ 69 NONAME
-	_ZN13RadioUiEngine21emitAudioRouteChangedEb @ 70 NONAME
-	_ZN13RadioUiEngine21launchSongRecognitionEv @ 71 NONAME
-	_ZN13RadioUiEngine22emitRadioStatusChangedEb @ 72 NONAME
-	_ZN13RadioUiEngine22rdsAvailabilityChangedEb @ 73 NONAME
-	_ZN13RadioUiEngine24emitAntennaStatusChangedEb @ 74 NONAME
-	_ZN13RadioUiEngine26emitRdsAvailabilityChangedEb @ 75 NONAME
-	_ZN13RadioUiEngine26setFirstTimeStartPerformedEb @ 76 NONAME
-	_ZN13RadioUiEngine29isSongRecognitionAppAvailableEv @ 77 NONAME
-	_ZN13RadioUiEngine4initEv @ 78 NONAME
-	_ZN13RadioUiEngine7setMuteEb @ 79 NONAME
-	_ZN13RadioUiEngine8settingsEv @ 80 NONAME
-	_ZN13RadioUiEngine9setVolumeEi @ 81 NONAME
-	_ZN13RadioUiEngineC1EP7QObject @ 82 NONAME
-	_ZN13RadioUiEngineC2EP7QObject @ 83 NONAME
-	_ZN13RadioUiEngineD0Ev @ 84 NONAME
-	_ZN13RadioUiEngineD1Ev @ 85 NONAME
-	_ZN13RadioUiEngineD2Ev @ 86 NONAME
-	_ZN16RadioHistoryItem10setStationERK7QString @ 87 NONAME
-	_ZN16RadioHistoryItem12setFrequencyEj @ 88 NONAME
-	_ZN16RadioHistoryItem14setCurrentTimeEv @ 89 NONAME
-	_ZN16RadioHistoryItem5resetEv @ 90 NONAME
-	_ZN16RadioHistoryItem8setTitleERK7QString @ 91 NONAME
-	_ZN16RadioHistoryItem9setArtistERK7QString @ 92 NONAME
-	_ZN16RadioHistoryItemC1ERK7QStringS2_ @ 93 NONAME
-	_ZN16RadioHistoryItemC1ERKS_ @ 94 NONAME
-	_ZN16RadioHistoryItemC1Ev @ 95 NONAME
-	_ZN16RadioHistoryItemC2ERK7QStringS2_ @ 96 NONAME
-	_ZN16RadioHistoryItemC2ERKS_ @ 97 NONAME
-	_ZN16RadioHistoryItemC2Ev @ 98 NONAME
-	_ZN16RadioHistoryItemD1Ev @ 99 NONAME
-	_ZN16RadioHistoryItemD2Ev @ 100 NONAME
-	_ZN16RadioHistoryItemaSERKS_ @ 101 NONAME
-	_ZN17RadioHistoryModel11qt_metacallEN11QMetaObject4CallEiPPv @ 102 NONAME
-	_ZN17RadioHistoryModel11qt_metacastEPKc @ 103 NONAME
-	_ZN17RadioHistoryModel13emitItemAddedEv @ 104 NONAME
-	_ZN17RadioHistoryModel13setShowTaggedEb @ 105 NONAME
-	_ZN17RadioHistoryModel13toggleTaggingERK16RadioHistoryItemi @ 106 NONAME
-	_ZN17RadioHistoryModel14setShowDetailsEb @ 107 NONAME
-	_ZN17RadioHistoryModel16addRadioTextPlusEiRK7QStringRK12RadioStation @ 108 NONAME
+	_ZN13RadioUiEngine11cancelTimerEiPK7QObject @ 36 NONAME
+	_ZN13RadioUiEngine11muteChangedEb @ 37 NONAME
+	_ZN13RadioUiEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 38 NONAME
+	_ZN13RadioUiEngine11qt_metacastEPKc @ 39 NONAME
+	_ZN13RadioUiEngine11seekStationEi @ 40 NONAME
+	_ZN13RadioUiEngine11setPowerOffEi @ 41 NONAME
+	_ZN13RadioUiEngine11skipStationEN11StationSkip4ModeEji @ 42 NONAME
+	_ZN13RadioUiEngine12historyModelEv @ 43 NONAME
+	_ZN13RadioUiEngine12setFrequencyEji @ 44 NONAME
+	_ZN13RadioUiEngine12stationModelEv @ 45 NONAME
+	_ZN13RadioUiEngine13genreToStringEiN11GenreTarget6TargetE @ 46 NONAME
+	_ZN13RadioUiEngine13launchBrowserERK7QString @ 47 NONAME
+	_ZN13RadioUiEngine13scannerEngineEv @ 48 NONAME
+	_ZN13RadioUiEngine13volumeChangedEi @ 49 NONAME
+	_ZN13RadioUiEngine14openMusicStoreERK16RadioHistoryItemNS_10MusicStoreE @ 50 NONAME
+	_ZN13RadioUiEngine14seekingStartedEi @ 51 NONAME
+	_ZN13RadioUiEngine15emitMuteChangedEb @ 52 NONAME
+	_ZN13RadioUiEngine15stationsInRangeEjj @ 53 NONAME
+	_ZN13RadioUiEngine16isFirstTimeStartEv @ 54 NONAME
+	_ZN13RadioUiEngine16staticMetaObjectE @ 55 NONAME DATA 16
+	_ZN13RadioUiEngine16toggleAudioRouteEv @ 56 NONAME
+	_ZN13RadioUiEngine16tunedToFrequencyEji @ 57 NONAME
+	_ZN13RadioUiEngine17addRecognizedSongERK7QStringS2_RK12RadioStation @ 58 NONAME
+	_ZN13RadioUiEngine17audioRouteChangedEb @ 59 NONAME
+	_ZN13RadioUiEngine17emitVolumeChangedEi @ 60 NONAME
+	_ZN13RadioUiEngine17launchRadioServerEv @ 61 NONAME
+	_ZN13RadioUiEngine17powerOffRequestedEv @ 62 NONAME
+	_ZN13RadioUiEngine17setManualSeekModeEb @ 63 NONAME
+	_ZN13RadioUiEngine18emitSeekingStartedEN4Seek9DirectionE @ 64 NONAME
+	_ZN13RadioUiEngine18lastTunedFrequencyEj @ 65 NONAME
+	_ZN13RadioUiEngine18radioStatusChangedEb @ 66 NONAME
+	_ZN13RadioUiEngine19createScannerEngineEv @ 67 NONAME
+	_ZN13RadioUiEngine19getStaticMetaObjectEv @ 68 NONAME
+	_ZN13RadioUiEngine20antennaStatusChangedEb @ 69 NONAME
+	_ZN13RadioUiEngine20emitTunedToFrequencyEji @ 70 NONAME
+	_ZN13RadioUiEngine21emitAudioRouteChangedEb @ 71 NONAME
+	_ZN13RadioUiEngine21launchSongRecognitionEv @ 72 NONAME
+	_ZN13RadioUiEngine22emitRadioStatusChangedEb @ 73 NONAME
+	_ZN13RadioUiEngine22rdsAvailabilityChangedEb @ 74 NONAME
+	_ZN13RadioUiEngine24emitAntennaStatusChangedEb @ 75 NONAME
+	_ZN13RadioUiEngine26emitRdsAvailabilityChangedEb @ 76 NONAME
+	_ZN13RadioUiEngine26setFirstTimeStartPerformedEb @ 77 NONAME
+	_ZN13RadioUiEngine29isSongRecognitionAppAvailableEv @ 78 NONAME
+	_ZN13RadioUiEngine4initEv @ 79 NONAME
+	_ZN13RadioUiEngine7setMuteEb @ 80 NONAME
+	_ZN13RadioUiEngine8settingsEv @ 81 NONAME
+	_ZN13RadioUiEngine9setVolumeEi @ 82 NONAME
+	_ZN13RadioUiEngineC1EP7QObject @ 83 NONAME
+	_ZN13RadioUiEngineC2EP7QObject @ 84 NONAME
+	_ZN13RadioUiEngineD0Ev @ 85 NONAME
+	_ZN13RadioUiEngineD1Ev @ 86 NONAME
+	_ZN13RadioUiEngineD2Ev @ 87 NONAME
+	_ZN16RadioHistoryItem10setStationERK7QString @ 88 NONAME
+	_ZN16RadioHistoryItem12setFrequencyEj @ 89 NONAME
+	_ZN16RadioHistoryItem14setCurrentTimeEv @ 90 NONAME
+	_ZN16RadioHistoryItem5resetEv @ 91 NONAME
+	_ZN16RadioHistoryItem8setTitleERK7QString @ 92 NONAME
+	_ZN16RadioHistoryItem9setArtistERK7QString @ 93 NONAME
+	_ZN16RadioHistoryItemC1ERK7QStringS2_ @ 94 NONAME
+	_ZN16RadioHistoryItemC1ERKS_ @ 95 NONAME
+	_ZN16RadioHistoryItemC1Ev @ 96 NONAME
+	_ZN16RadioHistoryItemC2ERK7QStringS2_ @ 97 NONAME
+	_ZN16RadioHistoryItemC2ERKS_ @ 98 NONAME
+	_ZN16RadioHistoryItemC2Ev @ 99 NONAME
+	_ZN16RadioHistoryItemD1Ev @ 100 NONAME
+	_ZN16RadioHistoryItemD2Ev @ 101 NONAME
+	_ZN16RadioHistoryItemaSERKS_ @ 102 NONAME
+	_ZN17RadioHistoryModel11qt_metacallEN11QMetaObject4CallEiPPv @ 103 NONAME
+	_ZN17RadioHistoryModel11qt_metacastEPKc @ 104 NONAME
+	_ZN17RadioHistoryModel13emitItemAddedEv @ 105 NONAME
+	_ZN17RadioHistoryModel13setShowTaggedEb @ 106 NONAME
+	_ZN17RadioHistoryModel13toggleTaggingERK16RadioHistoryItemi @ 107 NONAME
+	_ZN17RadioHistoryModel14setShowDetailsEb @ 108 NONAME
 	_ZN17RadioHistoryModel16currentSongResetEv @ 109 NONAME
 	_ZN17RadioHistoryModel16resetCurrentSongEv @ 110 NONAME
 	_ZN17RadioHistoryModel16staticMetaObjectE @ 111 NONAME DATA 16
@@ -114,7 +114,7 @@
 	_ZN17RadioHistoryModel18clearRadioTextPlusEv @ 113 NONAME
 	_ZN17RadioHistoryModel19getStaticMetaObjectEv @ 114 NONAME
 	_ZN17RadioHistoryModel20removeByModelIndicesER5QListI11QModelIndexEb @ 115 NONAME
-	_ZN17RadioHistoryModel7addItemERK7QStringS2_RK12RadioStation @ 116 NONAME
+	_ZN17RadioHistoryModel7addItemERK7QStringS2_RK12RadioStationb @ 116 NONAME
 	_ZN17RadioHistoryModel8setIconsERK5QIconS2_ @ 117 NONAME
 	_ZN17RadioHistoryModel9itemAddedEv @ 118 NONAME
 	_ZN17RadioHistoryModel9removeAllEb @ 119 NONAME
@@ -134,119 +134,123 @@
 	_ZN17RadioStationModel13favoriteCountEv @ 133 NONAME
 	_ZN17RadioStationModel13removeStationERK12RadioStation @ 134 NONAME
 	_ZN17RadioStationModel13renameStationEiRK7QString @ 135 NONAME
-	_ZN17RadioStationModel14currentStationEv @ 136 NONAME
-	_ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 137 NONAME
-	_ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 138 NONAME
-	_ZN17RadioStationModel15findPresetIndexEi @ 139 NONAME
-	_ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 140 NONAME
-	_ZN17RadioStationModel15stationsInRangeEjj @ 141 NONAME
-	_ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 142 NONAME
-	_ZN17RadioStationModel16staticMetaObjectE @ 143 NONAME DATA 16
-	_ZN17RadioStationModel16stationHandlerIfEv @ 144 NONAME
-	_ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 145 NONAME
-	_ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 146 NONAME
-	_ZN17RadioStationModel17removeByFrequencyEj @ 147 NONAME
-	_ZN17RadioStationModel18indexFromFrequencyEj @ 148 NONAME
-	_ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 149 NONAME
-	_ZN17RadioStationModel19dynamicPsCheckEndedEv @ 150 NONAME
-	_ZN17RadioStationModel19getStaticMetaObjectEv @ 151 NONAME
-	_ZN17RadioStationModel19removeByPresetIndexEi @ 152 NONAME
-	_ZN17RadioStationModel19setFavoriteByPresetEib @ 153 NONAME
-	_ZN17RadioStationModel20removeByModelIndicesER5QListI11QModelIndexEb @ 154 NONAME
-	_ZN17RadioStationModel21findUnusedPresetIndexEv @ 155 NONAME
-	_ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 156 NONAME
-	_ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 157 NONAME
-	_ZN17RadioStationModel8setIconsERK5QIconS2_S2_ @ 158 NONAME
-	_ZN17RadioStationModel9removeAllENS_10RemoveModeE @ 159 NONAME
-	_ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 160 NONAME
-	_ZN17RadioStationModelC1ER20RadioUiEnginePrivate @ 161 NONAME
-	_ZN17RadioStationModelC2ER20RadioUiEnginePrivate @ 162 NONAME
-	_ZN17RadioStationModelD0Ev @ 163 NONAME
-	_ZN17RadioStationModelD1Ev @ 164 NONAME
-	_ZN17RadioStationModelD2Ev @ 165 NONAME
-	_ZN18RadioScannerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 166 NONAME
-	_ZN18RadioScannerEngine11qt_metacastEPKc @ 167 NONAME
-	_ZN18RadioScannerEngine12stationFoundERK12RadioStation @ 168 NONAME
-	_ZN18RadioScannerEngine13startScanningEv @ 169 NONAME
-	_ZN18RadioScannerEngine16continueScanningEv @ 170 NONAME
-	_ZN18RadioScannerEngine16emitStationFoundERK12RadioStation @ 171 NONAME
-	_ZN18RadioScannerEngine16staticMetaObjectE @ 172 NONAME DATA 16
-	_ZN18RadioScannerEngine19addScannedFrequencyEj @ 173 NONAME
-	_ZN18RadioScannerEngine19getStaticMetaObjectEv @ 174 NONAME
-	_ZN18RadioScannerEngine6cancelEv @ 175 NONAME
-	_ZN18RadioScannerEngineC1ER20RadioUiEnginePrivate @ 176 NONAME
-	_ZN18RadioScannerEngineC2ER20RadioUiEnginePrivate @ 177 NONAME
-	_ZN18RadioScannerEngineD0Ev @ 178 NONAME
-	_ZN18RadioScannerEngineD1Ev @ 179 NONAME
-	_ZN18RadioScannerEngineD2Ev @ 180 NONAME
-	_ZNK12RadioStation10hasChangedEv @ 181 NONAME
-	_ZNK12RadioStation10hasSentRdsEv @ 182 NONAME
-	_ZNK12RadioStation10isDetachedEv @ 183 NONAME
-	_ZNK12RadioStation10isFavoriteEv @ 184 NONAME
-	_ZNK12RadioStation11changeFlagsEv @ 185 NONAME
-	_ZNK12RadioStation11presetIndexEv @ 186 NONAME
-	_ZNK12RadioStation13dynamicPsTextEv @ 187 NONAME
-	_ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 188 NONAME
-	_ZNK12RadioStation15frequencyStringEv @ 189 NONAME
-	_ZNK12RadioStation3urlEv @ 190 NONAME
-	_ZNK12RadioStation4nameEv @ 191 NONAME
-	_ZNK12RadioStation5genreEv @ 192 NONAME
-	_ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 193 NONAME
-	_ZNK12RadioStation6piCodeEv @ 194 NONAME
-	_ZNK12RadioStation6psTypeEv @ 195 NONAME
-	_ZNK12RadioStation7isValidEv @ 196 NONAME
-	_ZNK12RadioStation9frequencyEv @ 197 NONAME
-	_ZNK12RadioStation9isRenamedEv @ 198 NONAME
-	_ZNK12RadioStation9radioTextEv @ 199 NONAME
-	_ZNK13RadioUiEngine10isScanningEv @ 200 NONAME
-	_ZNK13RadioUiEngine10metaObjectEv @ 201 NONAME
-	_ZNK13RadioUiEngine12maxFrequencyEv @ 202 NONAME
-	_ZNK13RadioUiEngine12minFrequencyEv @ 203 NONAME
-	_ZNK13RadioUiEngine13isInitializedEv @ 204 NONAME
-	_ZNK13RadioUiEngine13isPoweringOffEv @ 205 NONAME
-	_ZNK13RadioUiEngine16currentFrequencyEv @ 206 NONAME
-	_ZNK13RadioUiEngine17frequencyStepSizeEv @ 207 NONAME
-	_ZNK13RadioUiEngine17isAntennaAttachedEv @ 208 NONAME
-	_ZNK13RadioUiEngine18isInManualSeekModeEv @ 209 NONAME
-	_ZNK13RadioUiEngine18isUsingLoudspeakerEv @ 210 NONAME
-	_ZNK13RadioUiEngine6regionEv @ 211 NONAME
-	_ZNK13RadioUiEngine7isMutedEv @ 212 NONAME
-	_ZNK13RadioUiEngine9isRadioOnEv @ 213 NONAME
-	_ZNK16RadioHistoryItem10isDetachedEv @ 214 NONAME
-	_ZNK16RadioHistoryItem17isRecognizedByRdsEv @ 215 NONAME
-	_ZNK16RadioHistoryItem2idEv @ 216 NONAME
-	_ZNK16RadioHistoryItem4timeEv @ 217 NONAME
-	_ZNK16RadioHistoryItem5titleEv @ 218 NONAME
-	_ZNK16RadioHistoryItem6artistEv @ 219 NONAME
-	_ZNK16RadioHistoryItem7isValidEv @ 220 NONAME
-	_ZNK16RadioHistoryItem7stationEv @ 221 NONAME
-	_ZNK16RadioHistoryItem8isTaggedEv @ 222 NONAME
-	_ZNK16RadioHistoryItem9frequencyEv @ 223 NONAME
-	_ZNK17RadioHistoryModel10metaObjectEv @ 224 NONAME
-	_ZNK17RadioHistoryModel11itemAtIndexERK11QModelIndex @ 225 NONAME
-	_ZNK17RadioHistoryModel23isCurrentSongRecognizedEv @ 226 NONAME
-	_ZNK17RadioHistoryModel4dataERK11QModelIndexi @ 227 NONAME
-	_ZNK17RadioHistoryModel8rowCountERK11QModelIndex @ 228 NONAME
-	_ZNK17RadioStationModel10metaObjectEv @ 229 NONAME
-	_ZNK17RadioStationModel11findStationEjN12FindCriteria8CriteriaE @ 230 NONAME
-	_ZNK17RadioStationModel13findFrequencyEjR12RadioStationN12FindCriteria8CriteriaE @ 231 NONAME
-	_ZNK17RadioStationModel14currentStationEv @ 232 NONAME
-	_ZNK17RadioStationModel4dataERK11QModelIndexi @ 233 NONAME
-	_ZNK17RadioStationModel4listEv @ 234 NONAME
-	_ZNK17RadioStationModel5flagsERK11QModelIndex @ 235 NONAME
-	_ZNK17RadioStationModel8containsEj @ 236 NONAME
-	_ZNK17RadioStationModel8rowCountERK11QModelIndex @ 237 NONAME
-	_ZNK17RadioStationModel9stationAtEi @ 238 NONAME
-	_ZNK18RadioScannerEngine10isScanningEv @ 239 NONAME
-	_ZNK18RadioScannerEngine10metaObjectEv @ 240 NONAME
-	_ZTI12RadioStation @ 241 NONAME
-	_ZTI13RadioUiEngine @ 242 NONAME
-	_ZTI17RadioHistoryModel @ 243 NONAME
-	_ZTI17RadioStationModel @ 244 NONAME
-	_ZTI18RadioScannerEngine @ 245 NONAME
-	_ZTV12RadioStation @ 246 NONAME
-	_ZTV13RadioUiEngine @ 247 NONAME
-	_ZTV17RadioHistoryModel @ 248 NONAME
-	_ZTV17RadioStationModel @ 249 NONAME
-	_ZTV18RadioScannerEngine @ 250 NONAME
+	_ZN17RadioStationModel14clearRadiotextEi @ 136 NONAME
+	_ZN17RadioStationModel14currentStationEv @ 137 NONAME
+	_ZN17RadioStationModel14rtPlusCheckEndEv @ 138 NONAME
+	_ZN17RadioStationModel15emitDataChangedERK12RadioStation @ 139 NONAME
+	_ZN17RadioStationModel15favoriteChangedERK12RadioStation @ 140 NONAME
+	_ZN17RadioStationModel15findPresetIndexEi @ 141 NONAME
+	_ZN17RadioStationModel15findPresetIndexEiR12RadioStation @ 142 NONAME
+	_ZN17RadioStationModel15stationsInRangeEjj @ 143 NONAME
+	_ZN17RadioStationModel15stationsRemovedERK5QListIjE @ 144 NONAME
+	_ZN17RadioStationModel16dynamicPsChangedERK12RadioStation @ 145 NONAME
+	_ZN17RadioStationModel16staticMetaObjectE @ 146 NONAME DATA 16
+	_ZN17RadioStationModel16stationHandlerIfEv @ 147 NONAME
+	_ZN17RadioStationModel17emitChangeSignalsERK12RadioStation6QFlagsINS0_10ChangeFlagEE @ 148 NONAME
+	_ZN17RadioStationModel17radioTextReceivedERK12RadioStation @ 149 NONAME
+	_ZN17RadioStationModel17removeByFrequencyEj @ 150 NONAME
+	_ZN17RadioStationModel18indexFromFrequencyEj @ 151 NONAME
+	_ZN17RadioStationModel18stationDataChangedERK12RadioStation @ 152 NONAME
+	_ZN17RadioStationModel19dynamicPsCheckEndedEv @ 153 NONAME
+	_ZN17RadioStationModel19getStaticMetaObjectEv @ 154 NONAME
+	_ZN17RadioStationModel19removeByPresetIndexEi @ 155 NONAME
+	_ZN17RadioStationModel19setFavoriteByPresetEib @ 156 NONAME
+	_ZN17RadioStationModel20removeByModelIndicesER5QListI11QModelIndexEb @ 157 NONAME
+	_ZN17RadioStationModel21findUnusedPresetIndexEv @ 158 NONAME
+	_ZN17RadioStationModel22setFavoriteByFrequencyEjb @ 159 NONAME
+	_ZN17RadioStationModel7setDataERK11QModelIndexRK8QVarianti @ 160 NONAME
+	_ZN17RadioStationModel8setIconsERK5QIconS2_S2_ @ 161 NONAME
+	_ZN17RadioStationModel9removeAllENS_10RemoveModeE @ 162 NONAME
+	_ZN17RadioStationModel9setDetailE6QFlagsINS_10DetailFlagEE @ 163 NONAME
+	_ZN17RadioStationModelC1ER20RadioUiEnginePrivate @ 164 NONAME
+	_ZN17RadioStationModelC2ER20RadioUiEnginePrivate @ 165 NONAME
+	_ZN17RadioStationModelD0Ev @ 166 NONAME
+	_ZN17RadioStationModelD1Ev @ 167 NONAME
+	_ZN17RadioStationModelD2Ev @ 168 NONAME
+	_ZN18RadioScannerEngine11qt_metacallEN11QMetaObject4CallEiPPv @ 169 NONAME
+	_ZN18RadioScannerEngine11qt_metacastEPKc @ 170 NONAME
+	_ZN18RadioScannerEngine12stationFoundERK12RadioStation @ 171 NONAME
+	_ZN18RadioScannerEngine13startScanningEv @ 172 NONAME
+	_ZN18RadioScannerEngine16continueScanningEv @ 173 NONAME
+	_ZN18RadioScannerEngine16emitStationFoundERK12RadioStation @ 174 NONAME
+	_ZN18RadioScannerEngine16staticMetaObjectE @ 175 NONAME DATA 16
+	_ZN18RadioScannerEngine19addScannedFrequencyEj @ 176 NONAME
+	_ZN18RadioScannerEngine19getStaticMetaObjectEv @ 177 NONAME
+	_ZN18RadioScannerEngine6cancelEv @ 178 NONAME
+	_ZN18RadioScannerEngineC1ER20RadioUiEnginePrivate @ 179 NONAME
+	_ZN18RadioScannerEngineC2ER20RadioUiEnginePrivate @ 180 NONAME
+	_ZN18RadioScannerEngineD0Ev @ 181 NONAME
+	_ZN18RadioScannerEngineD1Ev @ 182 NONAME
+	_ZN18RadioScannerEngineD2Ev @ 183 NONAME
+	_ZNK12RadioStation10hasChangedEv @ 184 NONAME
+	_ZNK12RadioStation10hasSentRdsEv @ 185 NONAME
+	_ZNK12RadioStation10isDetachedEv @ 186 NONAME
+	_ZNK12RadioStation10isFavoriteEv @ 187 NONAME
+	_ZNK12RadioStation11changeFlagsEv @ 188 NONAME
+	_ZNK12RadioStation11presetIndexEv @ 189 NONAME
+	_ZNK12RadioStation13dynamicPsTextEv @ 190 NONAME
+	_ZNK12RadioStation14hasDataChangedE6QFlagsINS_10ChangeFlagEE @ 191 NONAME
+	_ZNK12RadioStation15frequencyStringEv @ 192 NONAME
+	_ZNK12RadioStation3urlEv @ 193 NONAME
+	_ZNK12RadioStation4nameEv @ 194 NONAME
+	_ZNK12RadioStation5genreEv @ 195 NONAME
+	_ZNK12RadioStation6isTypeE6QFlagsINS_8TypeFlagEE @ 196 NONAME
+	_ZNK12RadioStation6piCodeEv @ 197 NONAME
+	_ZNK12RadioStation6psTypeEv @ 198 NONAME
+	_ZNK12RadioStation7isValidEv @ 199 NONAME
+	_ZNK12RadioStation9frequencyEv @ 200 NONAME
+	_ZNK12RadioStation9isRenamedEv @ 201 NONAME
+	_ZNK12RadioStation9radioTextEv @ 202 NONAME
+	_ZNK13RadioUiEngine10isScanningEv @ 203 NONAME
+	_ZNK13RadioUiEngine10metaObjectEv @ 204 NONAME
+	_ZNK13RadioUiEngine12maxFrequencyEv @ 205 NONAME
+	_ZNK13RadioUiEngine12minFrequencyEv @ 206 NONAME
+	_ZNK13RadioUiEngine13isInitializedEv @ 207 NONAME
+	_ZNK13RadioUiEngine13isPoweringOffEv @ 208 NONAME
+	_ZNK13RadioUiEngine13isTimerActiveEiPK7QObject @ 209 NONAME
+	_ZNK13RadioUiEngine16currentFrequencyEv @ 210 NONAME
+	_ZNK13RadioUiEngine17frequencyStepSizeEv @ 211 NONAME
+	_ZNK13RadioUiEngine17isAntennaAttachedEv @ 212 NONAME
+	_ZNK13RadioUiEngine18isInManualSeekModeEv @ 213 NONAME
+	_ZNK13RadioUiEngine18isUsingLoudspeakerEv @ 214 NONAME
+	_ZNK13RadioUiEngine6regionEv @ 215 NONAME
+	_ZNK13RadioUiEngine7isMutedEv @ 216 NONAME
+	_ZNK13RadioUiEngine9isRadioOnEv @ 217 NONAME
+	_ZNK16RadioHistoryItem10isDetachedEv @ 218 NONAME
+	_ZNK16RadioHistoryItem17isRecognizedByRdsEv @ 219 NONAME
+	_ZNK16RadioHistoryItem2idEv @ 220 NONAME
+	_ZNK16RadioHistoryItem4timeEv @ 221 NONAME
+	_ZNK16RadioHistoryItem5titleEv @ 222 NONAME
+	_ZNK16RadioHistoryItem6artistEv @ 223 NONAME
+	_ZNK16RadioHistoryItem7isValidEv @ 224 NONAME
+	_ZNK16RadioHistoryItem7stationEv @ 225 NONAME
+	_ZNK16RadioHistoryItem8isTaggedEv @ 226 NONAME
+	_ZNK16RadioHistoryItem9frequencyEv @ 227 NONAME
+	_ZNK17RadioHistoryModel10metaObjectEv @ 228 NONAME
+	_ZNK17RadioHistoryModel11itemAtIndexERK11QModelIndex @ 229 NONAME
+	_ZNK17RadioHistoryModel23isCurrentSongRecognizedEv @ 230 NONAME
+	_ZNK17RadioHistoryModel4dataERK11QModelIndexi @ 231 NONAME
+	_ZNK17RadioHistoryModel8rowCountERK11QModelIndex @ 232 NONAME
+	_ZNK17RadioStationModel10metaObjectEv @ 233 NONAME
+	_ZNK17RadioStationModel11findStationEjN12FindCriteria8CriteriaE @ 234 NONAME
+	_ZNK17RadioStationModel13findFrequencyEjR12RadioStationN12FindCriteria8CriteriaE @ 235 NONAME
+	_ZNK17RadioStationModel14currentStationEv @ 236 NONAME
+	_ZNK17RadioStationModel4dataERK11QModelIndexi @ 237 NONAME
+	_ZNK17RadioStationModel4listEv @ 238 NONAME
+	_ZNK17RadioStationModel5flagsERK11QModelIndex @ 239 NONAME
+	_ZNK17RadioStationModel8containsEj @ 240 NONAME
+	_ZNK17RadioStationModel8rowCountERK11QModelIndex @ 241 NONAME
+	_ZNK17RadioStationModel9stationAtEi @ 242 NONAME
+	_ZNK18RadioScannerEngine10isScanningEv @ 243 NONAME
+	_ZNK18RadioScannerEngine10metaObjectEv @ 244 NONAME
+	_ZTI12RadioStation @ 245 NONAME
+	_ZTI13RadioUiEngine @ 246 NONAME
+	_ZTI17RadioHistoryModel @ 247 NONAME
+	_ZTI17RadioStationModel @ 248 NONAME
+	_ZTI18RadioScannerEngine @ 249 NONAME
+	_ZTV12RadioStation @ 250 NONAME
+	_ZTV13RadioUiEngine @ 251 NONAME
+	_ZTV17RadioHistoryModel @ 252 NONAME
+	_ZTV17RadioStationModel @ 253 NONAME
+	_ZTV18RadioScannerEngine @ 254 NONAME
 
--- a/radioapp/eabi/fmradiowidgetsu.def	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/eabi/fmradiowidgetsu.def	Fri Oct 15 16:26:27 2010 +0300
@@ -68,66 +68,66 @@
 	_ZN20RadioStationCarousel14updateStationsEv @ 67 NONAME
 	_ZN20RadioStationCarousel15cancelAnimationEv @ 68 NONAME
 	_ZN20RadioStationCarousel15setFavoriteIconERK6HbIcon @ 69 NONAME
-	_ZN20RadioStationCarousel15setScanningModeEb @ 70 NONAME
-	_ZN20RadioStationCarousel15updateRadioTextERK12RadioStation @ 71 NONAME
-	_ZN20RadioStationCarousel16frequencyChangedEjii @ 72 NONAME
-	_ZN20RadioStationCarousel16handleUrlClickedERK12RadioStation @ 73 NONAME
-	_ZN20RadioStationCarousel16scrollPosChangedERK7QPointF @ 74 NONAME
-	_ZN20RadioStationCarousel16staticMetaObjectE @ 75 NONAME DATA 16
-	_ZN20RadioStationCarousel17adjustAfterScrollEv @ 76 NONAME
-	_ZN20RadioStationCarousel17animateNewStationERK12RadioStation @ 77 NONAME
-	_ZN20RadioStationCarousel17handleIconClickedERK12RadioStation @ 78 NONAME
-	_ZN20RadioStationCarousel17setAutoScrollTimeEi @ 79 NONAME
-	_ZN20RadioStationCarousel17setManualSeekModeEb @ 80 NONAME
-	_ZN20RadioStationCarousel18setNonFavoriteIconERK6HbIcon @ 81 NONAME
-	_ZN20RadioStationCarousel19calculateDifferenceEiRN6Scroll9DirectionE @ 82 NONAME
-	_ZN20RadioStationCarousel19getStaticMetaObjectEv @ 83 NONAME
-	_ZN20RadioStationCarousel19updateAntennaStatusEb @ 84 NONAME
-	_ZN20RadioStationCarousel21scanAnimationFinishedEv @ 85 NONAME
-	_ZN20RadioStationCarousel22handleRadiotextClickedERK12RadioStation @ 86 NONAME
-	_ZN20RadioStationCarousel4initER13RadioUiLoaderP13RadioUiEngine @ 87 NONAME
-	_ZN20RadioStationCarousel4skipEN11StationSkip4ModeE @ 88 NONAME
-	_ZN20RadioStationCarousel6updateERK12RadioStation @ 89 NONAME
-	_ZN20RadioStationCarousel8uiEngineEv @ 90 NONAME
-	_ZN20RadioStationCarousel9adjustPosEi @ 91 NONAME
-	_ZN20RadioStationCarousel9nextIndexEi @ 92 NONAME
-	_ZN20RadioStationCarousel9prevIndexEi @ 93 NONAME
-	_ZN20RadioStationCarousel9showEventEP10QShowEvent @ 94 NONAME
-	_ZN20RadioStationCarousel9trimIndexEi @ 95 NONAME
-	_ZN20RadioStationCarouselC1EP13QGraphicsItem @ 96 NONAME
-	_ZN20RadioStationCarouselC2EP13QGraphicsItem @ 97 NONAME
-	_ZNK11RadioWindow10metaObjectEv @ 98 NONAME
-	_ZNK16RadioFadingLabel10metaObjectEv @ 99 NONAME
-	_ZNK19RadioFrequencyStrip10isScanningEv @ 100 NONAME
-	_ZNK19RadioFrequencyStrip10metaObjectEv @ 101 NONAME
-	_ZNK19RadioFrequencyStrip13isInitializedEv @ 102 NONAME
-	_ZNK19RadioFrequencyStrip15stationsInRangeEjj @ 103 NONAME
-	_ZNK19RadioFrequencyStrip16frequencyAtIndexEi @ 104 NONAME
-	_ZNK20RadioStationCarousel10metaObjectEv @ 105 NONAME
-	_ZNK20RadioStationCarousel12favoriteIconEv @ 106 NONAME
-	_ZNK20RadioStationCarousel13isInitializedEv @ 107 NONAME
-	_ZNK20RadioStationCarousel14autoScrollTimeEv @ 108 NONAME
-	_ZNK20RadioStationCarousel14isInManualSeekEv @ 109 NONAME
-	_ZNK20RadioStationCarousel15nonFavoriteIconEv @ 110 NONAME
-	_ZNK20RadioStationCarousel16isInScanningModeEv @ 111 NONAME
-	_ZNK20RadioStationCarousel17isAntennaAttachedEv @ 112 NONAME
-	_ZNK20RadioStationCarousel18isScrollingAllowedEv @ 113 NONAME
-	_ZTI11RadioWindow @ 114 NONAME
-	_ZTI16RadioFadingLabel @ 115 NONAME
-	_ZTI19RadioFrequencyStrip @ 116 NONAME
-	_ZTI20RadioStationCarousel @ 117 NONAME
-	_ZTV11RadioWindow @ 118 NONAME
-	_ZTV16RadioFadingLabel @ 119 NONAME
-	_ZTV19RadioFrequencyStrip @ 120 NONAME
-	_ZTV20RadioStationCarousel @ 121 NONAME
-	_ZThn28_N20RadioStationCarousel11findStationEj @ 122 NONAME
-	_ZThn28_N20RadioStationCarousel13localizeGenreEi @ 123 NONAME
-	_ZThn28_N20RadioStationCarousel16handleUrlClickedERK12RadioStation @ 124 NONAME
-	_ZThn28_N20RadioStationCarousel17handleIconClickedERK12RadioStation @ 125 NONAME
-	_ZThn28_N20RadioStationCarousel22handleRadiotextClickedERK12RadioStation @ 126 NONAME
-	_ZThn28_NK20RadioStationCarousel12favoriteIconEv @ 127 NONAME
-	_ZThn28_NK20RadioStationCarousel14isInManualSeekEv @ 128 NONAME
-	_ZThn28_NK20RadioStationCarousel15nonFavoriteIconEv @ 129 NONAME
+	_ZN20RadioStationCarousel15setScanningModeEN4Scan6StatusE @ 70 NONAME
+	_ZN20RadioStationCarousel16frequencyChangedEjii @ 71 NONAME
+	_ZN20RadioStationCarousel16handleUrlClickedERK12RadioStation @ 72 NONAME
+	_ZN20RadioStationCarousel16scrollPosChangedERK7QPointF @ 73 NONAME
+	_ZN20RadioStationCarousel16staticMetaObjectE @ 74 NONAME DATA 16
+	_ZN20RadioStationCarousel17adjustAfterScrollEv @ 75 NONAME
+	_ZN20RadioStationCarousel17animateNewStationERK12RadioStation @ 76 NONAME
+	_ZN20RadioStationCarousel17handleIconClickedEj @ 77 NONAME
+	_ZN20RadioStationCarousel17setAutoScrollTimeEi @ 78 NONAME
+	_ZN20RadioStationCarousel17setManualSeekModeEb @ 79 NONAME
+	_ZN20RadioStationCarousel18setNonFavoriteIconERK6HbIcon @ 80 NONAME
+	_ZN20RadioStationCarousel19calculateDifferenceEiRN6Scroll9DirectionE @ 81 NONAME
+	_ZN20RadioStationCarousel19getStaticMetaObjectEv @ 82 NONAME
+	_ZN20RadioStationCarousel19updateAntennaStatusEb @ 83 NONAME
+	_ZN20RadioStationCarousel21scanAnimationFinishedEv @ 84 NONAME
+	_ZN20RadioStationCarousel22handleRadiotextClickedERK12RadioStation @ 85 NONAME
+	_ZN20RadioStationCarousel4initER13RadioUiLoaderP13RadioUiEngine @ 86 NONAME
+	_ZN20RadioStationCarousel4skipEN11StationSkip4ModeE @ 87 NONAME
+	_ZN20RadioStationCarousel6updateERK12RadioStation @ 88 NONAME
+	_ZN20RadioStationCarousel8uiEngineEv @ 89 NONAME
+	_ZN20RadioStationCarousel9adjustPosEi @ 90 NONAME
+	_ZN20RadioStationCarousel9nextIndexEi @ 91 NONAME
+	_ZN20RadioStationCarousel9prevIndexEi @ 92 NONAME
+	_ZN20RadioStationCarousel9showEventEP10QShowEvent @ 93 NONAME
+	_ZN20RadioStationCarousel9trimIndexEi @ 94 NONAME
+	_ZN20RadioStationCarouselC1EP13QGraphicsItem @ 95 NONAME
+	_ZN20RadioStationCarouselC2EP13QGraphicsItem @ 96 NONAME
+	_ZNK11RadioWindow10metaObjectEv @ 97 NONAME
+	_ZNK16RadioFadingLabel10metaObjectEv @ 98 NONAME
+	_ZNK19RadioFrequencyStrip10isScanningEv @ 99 NONAME
+	_ZNK19RadioFrequencyStrip10metaObjectEv @ 100 NONAME
+	_ZNK19RadioFrequencyStrip13isInitializedEv @ 101 NONAME
+	_ZNK19RadioFrequencyStrip15stationsInRangeEjj @ 102 NONAME
+	_ZNK19RadioFrequencyStrip16frequencyAtIndexEi @ 103 NONAME
+	_ZNK20RadioStationCarousel10metaObjectEv @ 104 NONAME
+	_ZNK20RadioStationCarousel12favoriteIconEv @ 105 NONAME
+	_ZNK20RadioStationCarousel13isInitializedEv @ 106 NONAME
+	_ZNK20RadioStationCarousel14autoScrollTimeEv @ 107 NONAME
+	_ZNK20RadioStationCarousel14isInManualSeekEv @ 108 NONAME
+	_ZNK20RadioStationCarousel15nonFavoriteIconEv @ 109 NONAME
+	_ZNK20RadioStationCarousel16isInScanningModeEv @ 110 NONAME
+	_ZNK20RadioStationCarousel17isAntennaAttachedEv @ 111 NONAME
+	_ZNK20RadioStationCarousel18isScrollingAllowedEv @ 112 NONAME
+	_ZTI11RadioWindow @ 113 NONAME
+	_ZTI16RadioFadingLabel @ 114 NONAME
+	_ZTI19RadioFrequencyStrip @ 115 NONAME
+	_ZTI20RadioStationCarousel @ 116 NONAME
+	_ZTV11RadioWindow @ 117 NONAME
+	_ZTV16RadioFadingLabel @ 118 NONAME
+	_ZTV19RadioFrequencyStrip @ 119 NONAME
+	_ZTV20RadioStationCarousel @ 120 NONAME
+	_ZThn28_N20RadioStationCarousel11findStationEj @ 121 NONAME
+	_ZThn28_N20RadioStationCarousel13localizeGenreEi @ 122 NONAME
+	_ZThn28_N20RadioStationCarousel16handleUrlClickedERK12RadioStation @ 123 NONAME
+	_ZThn28_N20RadioStationCarousel17handleIconClickedEj @ 124 NONAME
+	_ZThn28_N20RadioStationCarousel22handleRadiotextClickedERK12RadioStation @ 125 NONAME
+	_ZThn28_NK20RadioStationCarousel12favoriteIconEv @ 126 NONAME
+	_ZThn28_NK20RadioStationCarousel14isInManualSeekEv @ 127 NONAME
+	_ZThn28_NK20RadioStationCarousel15nonFavoriteIconEv @ 128 NONAME
+	_ZThn28_NK20RadioStationCarousel17isAntennaAttachedEv @ 129 NONAME
 	_ZThn8_N11RadioWindowD0Ev @ 130 NONAME
 	_ZThn8_N11RadioWindowD1Ev @ 131 NONAME
 
--- a/radioapp/radioapplication/inc/radioapplication.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radioapplication/inc/radioapplication.h	Fri Oct 15 16:26:27 2010 +0300
@@ -45,7 +45,11 @@
 
     ~RadioApplication();
 
-private slots:
+Q_SIGNALS:
+
+    void applicationReady();
+
+private Q_SLOTS:
 
     void construct();
     void checkOfflineMode();
--- a/radioapp/radioapplication/inc/testwindow_win32.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radioapplication/inc/testwindow_win32.h	Fri Oct 15 16:26:27 2010 +0300
@@ -39,7 +39,7 @@
 
     void init();
 
-private slots:
+private Q_SLOTS:
 
     void changeOrientation();
     void volumeUp();
@@ -48,6 +48,8 @@
     void updateWindowSize();
     void addSong();
     void clearSong();
+    void addRadiotext();
+    void clearRadiotext();
     void toggleOffline();
     void changeTheme( const QString& theme );
 
@@ -66,6 +68,9 @@
     QPushButton*    mAddSongButton;
     QPushButton*    mClearSongButton;
 
+    QPushButton*    mAddRadiotextButton;
+    QPushButton*    mClearRadiotextButton;
+
     QPushButton*    mHeadsetButton;
     bool            mHeadsetConnected;
 
--- a/radioapp/radioapplication/src/testwindow_win32.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radioapplication/src/testwindow_win32.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -39,7 +39,7 @@
 
 const int WINDOW_WIDTH = 360;
 const int WINDOW_HEIGHT = 640;
-const int TOOLBAR_HEIGHT = 120;
+const int TOOLBAR_HEIGHT = 140;
 const int WINDOW_EXTRA_WIDTH = 5;
 
 const QString KBtnDisconnectHeadset = "Disconnect Headset";
@@ -48,8 +48,14 @@
 const QString KBtnGoOffline = "Go Offline";
 const QString KBtnGoOnline = "Go Online";
 
-struct Song
+const int LAYOUT_MARGIN = 5;
+const int LAYOUT_SPACING = 5;
+const int THEME_CHANGE_CONNECT_WAIT = 3000;
+const int THEME_CHANGE_REQUEST = 4;
+
+class Song
 {
+public:
     const char* mArtist;
     const char* mTitle;
 };
@@ -75,6 +81,8 @@
     mVolDownButton( new QPushButton( "Volume Down", this ) ),
     mAddSongButton( new QPushButton( "Add Song", this ) ),
     mClearSongButton( new QPushButton( "Clear Song", this ) ),
+    mAddRadiotextButton( new QPushButton( "Add Radiotext", this ) ),
+    mClearRadiotextButton( new QPushButton( "Clear Radiotext", this ) ),
     mHeadsetButton( new QPushButton( KBtnDisconnectHeadset, this ) ),
     mHeadsetConnected( true ),
     mOfflineButton( new QPushButton( KBtnGoOffline, this ) ),
@@ -94,6 +102,8 @@
     Radio::connect( mHeadsetButton, SIGNAL(clicked()), this, SLOT(toggleHeadsetStatus()) );
     Radio::connect( mAddSongButton, SIGNAL(clicked()), this, SLOT(addSong()) );
     Radio::connect( mClearSongButton, SIGNAL(clicked()), this, SLOT(clearSong()) );
+    Radio::connect( mAddRadiotextButton, SIGNAL(clicked()), this, SLOT(addRadiotext()) );
+    Radio::connect( mClearRadiotextButton, SIGNAL(clicked()), this, SLOT(clearRadiotext()) );
     Radio::connect( mOfflineButton, SIGNAL(clicked()), this, SLOT(toggleOffline()) );
     Radio::connect( mThemeBox, SIGNAL(activated(QString)), this, SLOT(changeTheme(QString)) );
 
@@ -117,12 +127,12 @@
     updateWindowSize();
 
     QVBoxLayout* layout = new QVBoxLayout( this );
-    layout->setMargin( 5 );
-    layout->setSpacing( 5 );
+    layout->setMargin( LAYOUT_MARGIN );
+    layout->setSpacing( LAYOUT_SPACING );
 
     mToolbarLayout = new QGridLayout( this );
-    mToolbarLayout->setHorizontalSpacing( 5 );
-    mToolbarLayout->setVerticalSpacing( 5 );
+    mToolbarLayout->setHorizontalSpacing( LAYOUT_SPACING );
+    mToolbarLayout->setVerticalSpacing( LAYOUT_SPACING );
 
     mToolbarLayout->addWidget( mOrientationButton, 0, 0 );
     mToolbarLayout->addWidget( mVolUpButton, 0, 1 );
@@ -130,14 +140,16 @@
     mToolbarLayout->addWidget( mHeadsetButton, 1, 0 );
     mToolbarLayout->addWidget( mAddSongButton, 2, 0 );
     mToolbarLayout->addWidget( mClearSongButton, 2, 1 );
-    mToolbarLayout->addWidget( mOfflineButton, 3, 0 );
+    mToolbarLayout->addWidget( mAddRadiotextButton, 3, 0 );
+    mToolbarLayout->addWidget( mClearRadiotextButton, 3, 1 );
+    mToolbarLayout->addWidget( mOfflineButton, 4, 0 );
 
     QGridLayout* themeLayout = new QGridLayout( this );
     themeLayout->addWidget( new QLabel( "Theme:", this ), 0, 0 );
     themeLayout->addWidget( mThemeBox, 0, 1 );
     themeLayout->setColumnStretch( 1, 2 );
 
-    mToolbarLayout->addLayout( themeLayout, 3, 1 );
+    mToolbarLayout->addLayout( themeLayout, 4, 1 );
     mToolbarLayout->setColumnStretch( 0, 1 );
     mToolbarLayout->setColumnStretch( 1, 1 );
 
@@ -252,6 +264,22 @@
 /*!
  * Private slot
  */
+void Win32Window::addRadiotext()
+{
+    RadioEngineWrapperPrivate::instance()->addRadiotext( "This is a long bit of radio text that spans multiple lines." );
+}
+
+/*!
+ * Private slot
+ */
+void Win32Window::clearRadiotext()
+{
+    RadioEngineWrapperPrivate::instance()->clearRadiotext();
+}
+
+/*!
+ * Private slot
+ */
 void Win32Window::toggleOffline()
 {
     bool offline = !RadioEngineWrapperPrivate::instance()->isOffline();
@@ -271,10 +299,10 @@
     LOG_FORMAT( "Changing to theme %s", GETSTRING( theme ) );
     QLocalSocket socket;
     socket.connectToServer( "hbthemeserver" );
-    if ( socket.waitForConnected( 3000 ) ) {
+    if ( socket.waitForConnected( THEME_CHANGE_CONNECT_WAIT ) ) {
         QByteArray outputByteArray;
         QDataStream outputDataStream( &outputByteArray, QIODevice::WriteOnly );
-        outputDataStream << 4; // EThemeSelection from HbThemeServerRequest in hbthemecommon_p.h
+        outputDataStream << THEME_CHANGE_REQUEST; // EThemeSelection from HbThemeServerRequest in hbthemecommon_p.h
         outputDataStream << theme;
         socket.write( outputByteArray );
         socket.flush();
--- a/radioapp/radioapplication/win32_stubs/qsysteminfo.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radioapplication/win32_stubs/qsysteminfo.h	Fri Oct 15 16:26:27 2010 +0300
@@ -36,7 +36,7 @@
     enum Profile { GeneralProfile, OfflineProfile };
     Profile currentProfile() { return GeneralProfile; }
 
-signals:
+Q_SIGNALS:
 
     void currentProfileChanged(QSystemDeviceInfo::Profile);
     
--- a/radioapp/radioapplication/win32_stubs/xqserviceprovider.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radioapplication/win32_stubs/xqserviceprovider.h	Fri Oct 15 16:26:27 2010 +0300
@@ -1,26 +1,22 @@
 /*
 * 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".
 *
-* This program is free software: you can redistribute it and/or modify
-* it under the terms of the GNU Lesser General Public License as published by
-* the Free Software Foundation, version 2.1 of the License.
-* 
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-* GNU Lesser General Public License for more details.
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
 *
-* You should have received a copy of the GNU Lesser General Public License
-* along with this program.  If not, 
-* see "http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html/".
+* Contributors:
 *
-* Description:                                                         
+* Description:
 *
 */
 
-#ifndef XQSERVICEABSTRACTSERVICE_H
-#define XQSERVICEABSTRACTSERVICE_H
+#ifndef XQSERVICEPROVIDER_H
+#define XQSERVICEPROVIDER_H
 
 // THIS IS A STUB CLASS FOR WIN32 ENVIRONMENT!
 // It is only meant to compile, not to actually do anything
@@ -85,4 +81,4 @@
     
 };
 
-#endif
+#endif // XQSERVICEPROVIDER_H
--- a/radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.h	Fri Oct 15 16:26:27 2010 +0300
@@ -96,10 +96,13 @@
 
     void clearSong();
 
+    void addRadiotext( const QString& radiotext );
+    void clearRadiotext();
+
     bool isOffline() const;
     void setOffline( bool offline );
 
-private slots:
+private Q_SLOTS:
 
     void frequencyEvent();
     void addSongTags();
--- a/radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -257,6 +257,25 @@
 /*!
  *
  */
+void RadioEngineWrapperPrivate::addRadiotext( const QString& radiotext )
+{
+    const uint frequency = mStationHandler.currentFrequency();
+    mStationHandler.setCurrentRadioText( frequency, radiotext );
+}
+
+/*!
+ *
+ */
+void RadioEngineWrapperPrivate::clearRadiotext()
+{
+    const uint frequency = mStationHandler.currentFrequency();
+    mStationHandler.setCurrentRadioText( frequency, "" );
+}
+
+
+/*!
+ *
+ */
 bool RadioEngineWrapperPrivate::isOffline() const
 {
     return mEngineSettings->value( KKeyOffline, false ).toBool();
--- a/radioapp/radioenginewrapper/src/t_radiodataparser.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radioenginewrapper/src/t_radiodataparser.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -90,7 +90,7 @@
     QFile file( KDataFile );
     if ( file.exists() ) {
         mSource.reset( new QXmlInputSource( &file ) );
-        mReader->setContentHandler( this );;
+        mReader->setContentHandler( this );
         mReader->setErrorHandler( this );
 
         return mReader->parse( mSource.data() );
@@ -279,7 +279,8 @@
             static_cast<RadioData::SettingHolder*>( popFromSettingStack( mSettingHolderStack ) ) );
     if ( mSettingHolderStack.count() == 0 )
     {
-        if ( RadioData::Setting* setting = topOfSettingStack( mSettingStack ) )
+        RadioData::Setting* setting = topOfSettingStack( mSettingStack );
+        if ( setting )
         {
             setting->setValue( *holder, *this );
         }
--- a/radioapp/radiouiengine/inc/radiocontrolservice.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiocontrolservice.h	Fri Oct 15 16:26:27 2010 +0300
@@ -36,7 +36,7 @@
     virtual ~RadioControlService();
 
 
-public slots:
+public Q_SLOTS:
 
     void command( int commandId );
 
--- a/radioapp/radiouiengine/inc/radiohistorymodel.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiohistorymodel.h	Fri Oct 15 16:26:27 2010 +0300
@@ -62,6 +62,8 @@
 
 // New functions
 
+    void addItem( const QString& artist, const QString& title, const RadioStation& station, bool fromRds = true );
+
     /*!
      * Sets the icons to be used in the list
      */
@@ -77,12 +79,12 @@
     void removeAll( bool removeTagged );
     void removeByModelIndices( QModelIndexList& indices, bool removeTags );
 
-signals:
+Q_SIGNALS:
 
     void itemAdded();
     void currentSongReset();
 
-public slots:
+public Q_SLOTS:
 
     void resetCurrentSong();
 
@@ -90,10 +92,7 @@
 
     explicit RadioHistoryModel( RadioUiEngine& uiEngine );
 
-    void addItem( const QString& artist, const QString& title, const RadioStation& station );
-
     void clearRadioTextPlus();
-    void addRadioTextPlus( int rtClass, const QString& rtItem, const RadioStation& station );
 
     void reportChangedData( int start, int end = -1 );
 
--- a/radioapp/radiouiengine/inc/radiohistorymodel_p.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiohistorymodel_p.h	Fri Oct 15 16:26:27 2010 +0300
@@ -88,9 +88,6 @@
 
     QScopedPointer<QSqlQueryModel>  mQueryModel;
 
-    QString                         mRtItemHolder;
-    int                             mRtItemClass;
-
     bool                            mTopItemIsPlaying;
 
     bool                            mShowDetails;
--- a/radioapp/radiouiengine/inc/radiomonitorservice.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiomonitorservice.h	Fri Oct 15 16:26:27 2010 +0300
@@ -20,6 +20,7 @@
 
 // System includes
 #include <xqserviceprovider.h>
+#include <QQueue>
 
 // User includes
 #include "radioservicedef.h"
@@ -42,12 +43,12 @@
 
     void init();
 
-public slots:
+public Q_SLOTS:
 
     void requestNotifications();    // Slot called by Qt Highway
     void requestAllData();          // Slot called by Qt Highway
 
-private slots:
+private Q_SLOTS:
 
     void notifyRadioStatus();
     void notifyFavoriteCount();
@@ -70,6 +71,7 @@
     QString trimHtmlTags( const QString& html );
 
     void notify( const QVariant& notification );
+    void notify( const QVariantList& list );
     void notifyList( const QVariantList& list );
 
 private: // data
@@ -80,8 +82,8 @@
 
     RadioStatus::Status     mRadioStatus;
 
-    QVariantList            mNotificationList;
-
+    QQueue<QVariantList>    mNotificationQueue;
+	
     QTimer*                 mNotificationTimer;
 
 };
--- a/radioapp/radiouiengine/inc/radioscannerengine.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/inc/radioscannerengine.h	Fri Oct 15 16:26:27 2010 +0300
@@ -76,7 +76,7 @@
      */
     void addScannedFrequency( const uint frequency );
 
-signals:
+Q_SIGNALS:
 
     void stationFound( const RadioStation& station );
 
--- a/radioapp/radiouiengine/inc/radiostation.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiostation.h	Fri Oct 15 16:26:27 2010 +0300
@@ -136,7 +136,6 @@
     // Setters for non-persistent data
     void setPsType( PsType psType );
     void setRadioText( const QString& radioText );
-    void setRadioTextPlus( const int rtPlusClass, const QString& rtPlusItem );
     void setDynamicPsText( const QString& dynamicPsText );
 
 public: // Getters and setters
--- a/radioapp/radiouiengine/inc/radiostationmodel.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiostationmodel.h	Fri Oct 15 16:26:27 2010 +0300
@@ -191,20 +191,31 @@
      */
     int indexFromFrequency( uint frequency );
 
-signals:
+Q_SIGNALS:
 
     void stationDataChanged( const RadioStation& station );
     void radioTextReceived( const RadioStation& station );
     void dynamicPsChanged( const RadioStation& station );
     void favoriteChanged( const RadioStation& station );
+    void stationsRemoved( const QList<uint>& frequencies );
 
-private slots:
+private Q_SLOTS:
 
     /*!
      * Timer timeout slot to indicate that the dynamic PS check has ended
      */
     void dynamicPsCheckEnded();
 
+    /*!
+     * Clears the radiotext from a station after its timeout has passed
+     */
+    void clearRadiotext( int id );
+
+    /*!
+     * Handles the end of RT plus check
+     */
+    void rtPlusCheckEnd();
+
 private:
 
 // New functions
--- a/radioapp/radiouiengine/inc/radiostationmodel_p.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiostationmodel_p.h	Fri Oct 15 16:26:27 2010 +0300
@@ -34,6 +34,8 @@
 class RadioEngineWrapper;
 class QTimer;
 
+typedef QMap<RtPlus::Tag,QString> RtPlusMap;
+
 // Class declaration
 class RadioStationModelPrivate : public RadioStationHandlerIf
                                , public RadioEngineWrapperObserver
@@ -71,10 +73,18 @@
 // New functions
 
     void doSaveStation( RadioStation& station, bool persistentSave = true );
+    
+    void doRemoveStation( const RadioStation& station, bool signalFrequency = true );
 
     QList<RadioStation> favorites() const;
     QList<RadioStation> locals() const;
 
+    void startRadioTextClearTimer();
+
+    RtPlus::Tag recognizeRtPlusTag( int rtClass );
+
+    void handleRadioTextPlus( const RtPlusMap& rtItems, RadioStation& station );
+
 private: // data
 
     /**
@@ -143,6 +153,12 @@
      */
     QIcon                       mNowPlayingIcon;
 
+    /**
+     * Holders for radio text and radio text plus items during RT Plus check
+     */
+    QString                     mRadioTextHolder;
+    RtPlusMap                   mRadioTextPlusItems;
+
 };
 
 #endif // RADIOSTATIONMODEL_P_H_
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/inc/radiotimerpool.h	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,76 @@
+/*
+* 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:
+*
+*/
+
+#ifndef RADIOTIMERPOOL_H
+#define RADIOTIMERPOOL_H
+
+// System includes
+#include <QObject>
+#include <QVariant>
+#include <QScopedPointer>
+
+// User includes
+
+// Forward declarations
+class QTimer;
+
+class RadioTimerPool : public QObject
+{
+    Q_OBJECT
+
+    class RadioTimerItem
+    {
+    public:
+
+        RadioTimerItem( RadioTimerPool* parent );
+        ~RadioTimerItem();
+        void reset();
+
+        QScopedPointer<QTimer>  mTimer;
+        QObject*                mReceiver;
+        QString                 mReceiverMember;
+        int                     mId;
+        QVariant                mParam;
+    };
+
+public:
+
+    RadioTimerPool( QObject* parent = 0 );
+    ~RadioTimerPool();
+
+    void startTimer( int msec, int id, QObject* receiver, const char* member, QVariant param );
+    void cancelTimer( int id, const QObject* receiver );
+    bool isTimerActive( int id, const QObject* receiver ) const;
+
+    void freeUnusedTimers();
+
+private Q_SLOTS:
+
+    void timerFired();
+
+private:
+
+    RadioTimerPool::RadioTimerItem* createItem();
+
+private: // data
+
+    QMap<QTimer*,RadioTimerItem*>   mTimerMap;
+
+};
+
+
+#endif // RADIOTIMERPOOL_H
--- a/radioapp/radiouiengine/inc/radiouiengine.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiouiengine.h	Fri Oct 15 16:26:27 2010 +0300
@@ -22,6 +22,7 @@
 // System includes
 #include <QObject>
 #include <QString>
+#include <QVariant>
 #include <QScopedPointer>
 #include <QSharedPointer>
 
@@ -131,7 +132,11 @@
      */
     void setFrequency( uint frequency, const int reason = TuneReason::Unspecified );
 
-signals:
+    void startTimer( int msec, int id, QObject* receiver, const char* member, QVariant param = QVariant() );
+    void cancelTimer( int id, const QObject* receiver );
+    bool isTimerActive( int id, const QObject* receiver ) const;
+
+Q_SIGNALS:
 
     void tunedToFrequency( uint frequency, int commandSender );
     void seekingStarted( int direction );
@@ -147,7 +152,7 @@
 
     void powerOffRequested();
 
-public slots:
+public Q_SLOTS:
 
     /*!
      * volume update command slot for the engine
--- a/radioapp/radiouiengine/inc/radiouiengine_p.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/inc/radiouiengine_p.h	Fri Oct 15 16:26:27 2010 +0300
@@ -35,7 +35,7 @@
 class RadioControlService;
 class RadioMonitorService;
 class RadioScannerEngine;
-class QTimer;
+class RadioTimerPool;
 
 class RadioUiEnginePrivate : public RadioEngineWrapperObserver
 {
@@ -98,13 +98,12 @@
 
     QScopedPointer<RadioMonitorService>     mMonitorService;
 
-    QWeakPointer<RadioScannerEngine>        mScannerEngine;
+    /*!
+     * Pool of multipurpose timers
+     */
+    QScopedPointer<RadioTimerPool>          mTimerPool;
 
-    /**
-     * Power off timer
-     * Owned by public class by setting parent
-     */
-    QTimer*                                 mPowerOffTimer;
+    QWeakPointer<RadioScannerEngine>        mScannerEngine;
 
 };
 
--- a/radioapp/radiouiengine/radiouiengine.pro	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/radiouiengine.pro	Fri Oct 15 16:26:27 2010 +0300
@@ -56,6 +56,7 @@
 HEADERS += radiogenrelocalizer.h
 HEADERS += radiocontrolservice.h
 HEADERS += radiomonitorservice.h
+HEADERS += radiotimerpool.h
 
 INTERNAL_HEADERS += radiostation_p.h
 INTERNAL_HEADERS += radiohistoryitem_p.h
@@ -81,3 +82,4 @@
 SOURCES += radioscannerengine_p.cpp
 SOURCES += radiocontrolservice.cpp
 SOURCES += radiomonitorservice.cpp
+SOURCES += radiotimerpool.cpp
--- a/radioapp/radiouiengine/src/radiohistorydatabase.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/src/radiohistorydatabase.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -29,7 +29,7 @@
 #include "radiohistorydatabase.h"
 #include "radiologger.h"
 
-static const QLatin1String DATABASE_NAME    ( "c:\\radioplayhistory.db" );
+static const QLatin1String DATABASE_NAME    ( "radioplayhistory.db" );
 static const QLatin1String DATABASE_DRIVER  ( "QSQLITE" );
 static const QLatin1String HISTORY_TABLE    ( "history" );
 static const QLatin1String SQL_CREATE_TABLE ( "CREATE TABLE history ("
@@ -56,6 +56,8 @@
 //static static const QLatin1String SQL_FIND_ITEM_BY_ID( "SELECT * FROM history WHERE id = ?" );
 static const QLatin1String SQL_TOGGLE_TAG   ( "UPDATE history SET tagged = ? WHERE id = ?" );
 
+const int THOUSAND_HERTZ = 1000;
+
 #ifdef LOGGING_ENABLED
 #   define GET_ERR( param ) GETSTRING( param.lastError().text() )
 #   define GET_ERR_PTR( param ) GETSTRING( param->lastError().text() )
@@ -97,7 +99,7 @@
     query.addBindValue( artist );
     query.addBindValue( title );
     query.addBindValue( stationName );
-    query.addBindValue( static_cast<int>( frequency / 1000 ) );
+    query.addBindValue( static_cast<int>( frequency / THOUSAND_HERTZ ) );
     query.addBindValue( fromRds );
     query.addBindValue( QDateTime::currentDateTime().toTime_t() );
 
--- a/radioapp/radiouiengine/src/radiohistoryitem.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/src/radiohistoryitem.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -25,7 +25,6 @@
 RadioHistoryItem::RadioHistoryItem() :
     mData( new RadioHistoryItemPrivate() )
 {
-    mData->ref.ref();
 }
 
 /*!
@@ -76,7 +75,6 @@
     mData->ref.deref();
     mData = NULL;
     mData = new RadioHistoryItemPrivate();
-    mData->ref.ref();
 }
 
 /*!
--- a/radioapp/radiouiengine/src/radiohistorymodel.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/src/radiohistorymodel.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -85,6 +85,18 @@
 }
 
 /*!
+ *
+ */
+void RadioHistoryModel::addItem( const QString& artist,
+                                 const QString& title,
+                                 const RadioStation& station,
+                                 bool fromRds )
+{
+    Q_D( RadioHistoryModel );
+    d->addItem( artist, title, station, fromRds );
+}
+
+/*!
  * Sets the icons to be used in the list
  */
 void RadioHistoryModel::setIcons( const QIcon& nonTaggedIcon, const QIcon& taggedIcon )
@@ -161,59 +173,14 @@
 /*!
  *
  */
-void RadioHistoryModel::addItem( const QString& artist, const QString& title, const RadioStation& station )
-{
-    Q_D( RadioHistoryModel );
-    d->addItem( artist, title, station );
-}
-
-/*!
- *
- */
 void RadioHistoryModel::clearRadioTextPlus()
 {
-    Q_D( RadioHistoryModel );
-    d->mRtItemHolder = "";
     resetCurrentSong();
 }
 
 /*!
  *
  */
-void RadioHistoryModel::addRadioTextPlus( int rtClass, const QString& rtItem, const RadioStation& station )
-{
-    if ( rtClass == RtPlus::Dummy || rtClass == RtPlus::Artist || rtClass == RtPlus::Title ) {
-        Q_D( RadioHistoryModel );
-        if ( d->mRtItemClass == -1 ) {
-            d->mRtItemClass = rtClass;
-            d->mRtItemHolder = rtItem;
-        } else {
-            // Received: Artist - Title
-            if ( d->mRtItemClass == RtPlus::Artist && rtClass == RtPlus::Title ) {
-                addItem( d->mRtItemHolder, rtItem, station );
-
-            // Received: Title - Artist
-            } else if ( rtClass == RtPlus::Artist && d->mRtItemClass == RtPlus::Title ) {
-                addItem( rtItem, d->mRtItemHolder, station );
-
-            // Received: Dummy - Title
-            } else if ( d->mRtItemClass == RtPlus::Dummy && rtClass == RtPlus::Title ) {
-                addItem( "", rtItem, station );
-
-            // Received: Title - Dummy
-            } else if ( rtClass == RtPlus::Dummy && d->mRtItemClass == RtPlus::Title ) {
-                addItem( "", d->mRtItemHolder, station );
-            }
-
-            d->mRtItemHolder = "";
-            d->mRtItemClass = -1;
-        }
-    }
-}
-
-/*!
- *
- */
 void RadioHistoryModel::reportChangedData( int start, int end )
 {
     if ( end == -1 ) {
--- a/radioapp/radiouiengine/src/radiohistorymodel_p.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/src/radiohistorymodel_p.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -33,7 +33,7 @@
 #include "radiostation.h"
 #include "radiologger.h"
 
-static const QLatin1String DATABASE_NAME    ( "c:\\radioplayhistory.db" );
+static const QLatin1String DATABASE_NAME    ( "radioplayhistory.db" );
 static const QLatin1String DATABASE_DRIVER  ( "QSQLITE" );
 static const QLatin1String HISTORY_TABLE    ( "history" );
 static const QLatin1String SQL_CREATE_TABLE ( "CREATE TABLE history ("
@@ -65,6 +65,7 @@
 static const QLatin1String OR_ID_IS_FORMAT_STR        (" OR id = %1");
 
 static const int MAX_ID_COUNT_IN_QUERY = 5;
+const int THOUSAND_HERTZ = 1000;
 
 #ifdef LOGGING_ENABLED
 #   define GET_ERR( param ) GETSTRING( param.lastError().text() )
@@ -87,7 +88,6 @@
                                                     RadioUiEngine& uiEngine ) :
     q_ptr( model ),
     mUiEngine( uiEngine ),
-    mRtItemClass( -1 ),
     mTopItemIsPlaying( false ),
     mShowDetails( true ),
     mViewMode( ShowAll )
@@ -153,7 +153,7 @@
 {
     LOG_FORMAT( "RadioHistoryModelPrivate::addItem. Artist: %s, Title: %s", GETSTRING( artist ), GETSTRING( title ) );
 
-    if ( !mQueryModel ) {
+    if ( !mQueryModel || title.isEmpty() ) {
         return;
     }
 
@@ -165,7 +165,7 @@
     query.addBindValue( artist );
     query.addBindValue( title );
     query.addBindValue( station.name() );
-    query.addBindValue( static_cast<int>( station.frequency() / 1000 ) );
+    query.addBindValue( static_cast<int>( station.frequency() / THOUSAND_HERTZ ) );
     query.addBindValue( fromRds );
     query.addBindValue( QDateTime::currentDateTime().toTime_t() );
 
@@ -200,7 +200,7 @@
 
             const QString title = record.value( RadioHistoryValue::Title ).toString();
             const QString station = record.value( RadioHistoryValue::Station ).toString();
-            const uint frequency = record.value( RadioHistoryValue::Frequency ).toUInt() * 1000;
+            const uint frequency = record.value( RadioHistoryValue::Frequency ).toUInt() * THOUSAND_HERTZ;
 
             QStringList list;
             if ( mShowDetails ) {
--- a/radioapp/radiouiengine/src/radiomonitorservice.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/src/radiomonitorservice.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -87,7 +87,9 @@
                     this,           SLOT(notifyStationChange(RadioStation)) );
     Radio::connect( stationModel,   SIGNAL(radioTextReceived(RadioStation)),
                     this,           SLOT(notifyStationChange(RadioStation)) );
-
+    Radio::connect( stationModel,   SIGNAL(dynamicPsChanged(RadioStation)),
+                    this,           SLOT(notifyStationChange(RadioStation)) );
+    
     RadioUiEngine* uiEngine = &mUiEngine.api();
     Radio::connect( uiEngine,       SIGNAL(seekingStarted(int)),
                     this,           SLOT(notifyRadioStatus()) );
@@ -95,8 +97,8 @@
                     this,           SLOT(notifyRadioStatus()) );
     Radio::connect( uiEngine,       SIGNAL(antennaStatusChanged(bool)),
                     this,           SLOT(notifyRadioStatus()) );
-    Radio::connect( uiEngine,       SIGNAL(powerOffRequested()),
-                    this,           SLOT(notifyRadioStatus()) );
+//    Radio::connect( uiEngine,       SIGNAL(powerOffRequested()),
+//                    this,           SLOT(notifyRadioStatus()) );
 
     mUiEngine.wrapper().addObserver( this );
 
@@ -178,7 +180,8 @@
 
     if ( radioStatus != mRadioStatus ) {
         if ( radioStatus == RadioStatus::Seeking ) {
-            if ( RadioScannerEngine* scannerEngine = mUiEngine.api().scannerEngine() ) {
+            RadioScannerEngine* scannerEngine = mUiEngine.api().scannerEngine();
+            if ( scannerEngine ) {
                 Radio::connect( scannerEngine,  SIGNAL(destroyed()),
                                 this,           SLOT(notifyRadioStatus()) );
             }
@@ -197,10 +200,7 @@
 {
     const int favoriteCount = mUiEngine.api().stationModel().favoriteCount();
     RUN_NOTIFY( FavoriteCount, favoriteCount );
-
-    if ( favoriteCount == 1 ) {
-        checkIfCurrentStationIsFavorite();
-    }
+    checkIfCurrentStationIsFavorite();
 }
 
 /*!
@@ -248,7 +248,8 @@
         list.append( notification );
     }
 
-    notifyList( list );
+    notify( list );
+
 }
 
 /*!
@@ -257,8 +258,15 @@
  */
 void RadioMonitorService::sendNotifications()
 {
-    notifyList( mNotificationList );
-    mNotificationList.clear();
+
+    if ( !mNotificationQueue.isEmpty() )
+    {
+        notifyList( mNotificationQueue.dequeue() );
+    }
+    if ( !mNotificationQueue.isEmpty() )
+    {
+        mNotificationTimer->start();
+    }
 }
 
 /*!
@@ -268,6 +276,11 @@
 {
     Q_UNUSED( reason );
     if ( !mUiEngine.api().isScanning() ) {
+
+        // frequency changed, cancel any pending notification as it has become invalid
+        mNotificationTimer->stop();
+        mNotificationQueue.clear();
+        
         RUN_NOTIFY( Frequency, RadioStation::parseFrequency( frequency ) );
         RadioStation station;
         if ( mUiEngine.api().stationModel().findFrequency( frequency, station ) && !station.name().isEmpty() ) {
@@ -275,9 +288,7 @@
         }
 
         const int favoriteCount = mUiEngine.api().stationModel().favoriteCount();
-        if ( favoriteCount == 1 ) {
-            checkIfCurrentStationIsFavorite();
-        }
+        checkIfCurrentStationIsFavorite();
     }
 }
 
@@ -326,9 +337,21 @@
  */
 void RadioMonitorService::notify( const QVariant& notification )
 {
-    mNotificationTimer->stop();
-    mNotificationList.append( notification );
-    mNotificationTimer->start();
+    QVariantList list;
+    list.append( notification );
+    notify( list );
+}
+
+/*!
+ *
+ */
+void RadioMonitorService::notify( const QVariantList& list )
+{
+    mNotificationQueue.enqueue( list );
+    if ( !mNotificationTimer->isActive() )
+    {
+        mNotificationTimer->start();
+    }
 }
 
 /*!
--- a/radioapp/radiouiengine/src/radiostation.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostation.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -25,8 +25,6 @@
 #include "radio_global.h"
 
 // Constants
-const QLatin1String HTML_TAG_START( "<font color='cyan'><u>" );
-const QLatin1String HTML_TAG_END( "</u></font>" );
 
 const uint LAST_CALLSIGN_CHAR_CODE = 25;
 const uint THREE_LETTER_CALLSIGN_COUNT = 72;
@@ -311,28 +309,6 @@
 /*!
  *
  */
-void RadioStation::setRadioTextPlus( const int rtPlusClass, const QString& rtPlusItem )
-{
-    if ( !mData->mRadioText.isEmpty() &&
-         !rtPlusItem.isEmpty() &&
-         ( rtPlusClass == RtPlus::Artist || rtPlusClass == RtPlus::Title || rtPlusClass == RtPlus::Homepage) )
-    {
-        // Url is saved to its own variable and it is not highlighted from the radiotext
-        if ( rtPlusClass == RtPlus::Homepage ) {
-            setUrl( rtPlusItem );
-            return;
-        }
-
-        const QString replacement = HTML_TAG_START + rtPlusItem + HTML_TAG_END;
-
-        mData->mRadioText.replace( rtPlusItem, replacement );
-        mData->mChangeFlags |= RadioStation::RadioTextChanged;
-    }
-}
-
-/*!
- *
- */
 void RadioStation::setDynamicPsText( const QString& dynamicPsText )
 {
     if ( mData->mDynamicPsText.compare( dynamicPsText ) != 0 ) {
--- a/radioapp/radiouiengine/src/radiostationmodel.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostationmodel.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -29,6 +29,8 @@
 #include "radiostation_p.h"
 #include "radiologger.h"
 
+// Constants
+
 /*!
  *
  */
@@ -424,51 +426,35 @@
 void RadioStationModel::removeStation( const RadioStation& station )
 {
     Q_D( RadioStationModel );
-    const uint frequency = station.frequency();
-    if ( d->mStations.contains( frequency ) ) {
-
-        // If we are removing the current station, copy its data to the current station pointer
-        // to keep all of the received RDS data still available. They will be discarded when
-        // the user tunes to another frequency, but they are available if the user decides to add it back.
-        if ( d->mCurrentStation->frequency() == frequency ) {
-            *d->mCurrentStation = station;
-        }
-
-        // Copy the station to a temporary variable that can be used as signal parameter
-        RadioStation tempStation = station;
+    d->doRemoveStation( station );   
+}
 
-        const int row = indexFromFrequency( tempStation.frequency() );
-        beginRemoveRows( QModelIndex(), row, row );
-
-        d->mPresetStorage->deletePreset( tempStation.presetIndex() );
-        d->mStations.remove( frequency );
-
-        d->mCurrentStation = NULL;
-        d->setCurrentStation( d->mWrapper->currentFrequency() );
-
-        endRemoveRows();
-    }
-}
 /*!
  * Removes stations based on model indices
  */
 void RadioStationModel::removeByModelIndices( QModelIndexList& indices, bool removefavorite )
 {
+    Q_D( RadioStationModel );
     // List needs to be sorted and indices needs to go throught from largest to smallest.
     // This is for keeping QmodelIndexing in sync after begin- and endremoverows, which
     // are needed for each item separately
     qSort( indices );
     QModelIndexList::const_iterator iter = indices.constEnd();
     QModelIndexList::const_iterator begin = indices.constBegin();
+    QList<uint> frequencies;
     RadioStation station;  
     while( iter != begin ) {
-       iter--;
-       station = stationAt( (*iter).row() );
-       if( removefavorite ) {
-          setFavoriteByPreset( station.presetIndex(), false );   
-      } else {                     
-          removeStation( station );
-      }                     
+        iter--;
+        station = stationAt( (*iter).row() );
+        if( removefavorite ) {
+            setFavoriteByPreset( station.presetIndex(), false );   
+        } else {    
+            frequencies.append( station.frequency() );
+            d->doRemoveStation( station, false );
+        }                     
+    }
+    if( !removefavorite && frequencies.count() ) {
+        emit stationsRemoved( frequencies );
     }
 }
 
@@ -484,18 +470,30 @@
     }
 
     if ( mode == RemoveAll ) {
+        
+        // sace frequencies locally so that they can be used while emitting signal
+        QList<uint> frequencies = list().keys();        
+        
+        // notify changes about current station for UI to update correctly
+        d->mCurrentStation->setFavorite( false );
+        d->mCurrentStation->setUserDefinedName( "" );
+        emitChangeSignals( *d->mCurrentStation, d->mCurrentStation->changeFlags() );
+        
         beginRemoveRows( QModelIndex(), 0, rowCount() - 1 );
 
         // Preset utility deletes all presets with index -1
         bool success = d->mPresetStorage->deletePreset( -1 );
         Q_UNUSED( success );
         RADIO_ASSERT( success, "FMRadio", "Failed to remove station" );
-
+        
         d->mStations.clear();
         d->mCurrentStation = NULL;
         d->setCurrentStation( d->mWrapper->currentFrequency() );
 
         endRemoveRows();
+        
+        emit stationsRemoved( frequencies );
+        
     } else {
         foreach( const RadioStation& station, d->mStations ) {
 
@@ -655,7 +653,7 @@
     LOG_FORMAT( "RadioStationModel::renameStation, presetIndex: %d, name: %s", presetIndex, GETSTRING(name) );
     RadioStation station;
     if ( findPresetIndex( presetIndex, station ) != RadioStation::NotFound ) {
-        station.setUserDefinedName( name.left(15) ); // Only 15 characters allowed
+        station.setUserDefinedName( name.left( MAX_STATION_NAME_LENGTH ) );
         saveStation( station );
     }
 }
@@ -746,38 +744,69 @@
 }
 
 /*!
+ * Private slot
+ * Clears the radiotext from a station after its timeout has passed
+ */
+void RadioStationModel::clearRadiotext( int id )
+{
+    uint frequency = static_cast<uint>( id );
+    RadioStation station = findStation( frequency );
+    if ( station.isValid() ) {
+        station.setRadioText( "" );
+        saveStation( station );
+    }
+}
+
+/*!
+ * Private slot
+ * Handles the end of RT plus check
+ */
+void RadioStationModel::rtPlusCheckEnd()
+{
+    Q_D( RadioStationModel );
+    if ( !d->mRadioTextHolder.isEmpty() ) {
+        d->mCurrentStation->setRadioText( d->mRadioTextHolder );
+        saveStation( *d->mCurrentStation );
+        d->mRadioTextHolder.clear();
+        d->startRadioTextClearTimer();
+    }
+}
+
+/*!
  * Checks the given station and emits signals based on what member variables had been changed
  */
 void RadioStationModel::emitChangeSignals( const RadioStation& station, RadioStation::Change flags )
 {
+    // Create a temporary RadioStation for the duration of the signal-slot processing
+    // The receivers can ask the station what data has changed and update accordingly
+    RadioStation tempStation( station );
+    tempStation.setChangeFlags( flags );
+
     if ( flags.testFlag( RadioStation::NameChanged ) ||
          flags.testFlag( RadioStation::GenreChanged ) ||
          flags.testFlag( RadioStation::UrlChanged ) ||
          flags.testFlag( RadioStation::TypeChanged ) ||
          flags.testFlag( RadioStation::PiCodeChanged ) ) {
 
-        // Create a temporary RadioStation for the duration of the signal-slot processing
-        // The receivers can ask the station what data has changed and update accordingly
-        RadioStation tempStation( station );
-        tempStation.setChangeFlags( flags );
         emit stationDataChanged( tempStation );
 
         emitDataChanged( tempStation );
     }
 
     if ( flags.testFlag( RadioStation::RadioTextChanged ) ) {
-        emit radioTextReceived( station );
-        emitDataChanged( station );
+
+        emit radioTextReceived( tempStation );
+        emitDataChanged( tempStation );
     }
 
     if ( flags.testFlag( RadioStation::DynamicPsChanged ) ) {
-        emit dynamicPsChanged( station );
-        emitDataChanged( station );
+        emit dynamicPsChanged( tempStation );
+        emitDataChanged( tempStation );
     }
 
     if ( flags.testFlag( RadioStation::FavoriteChanged ) && station.isValid() ) {
-        emit favoriteChanged( station );
-        emitDataChanged( station );
+        emit favoriteChanged( tempStation );
+        emitDataChanged( tempStation );
     }
 }
 
--- a/radioapp/radiouiengine/src/radiostationmodel_p.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/src/radiostationmodel_p.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -34,7 +34,15 @@
 /**
  * Timeout period for checking if station is sending dynamic PS in milliseconds
  */
-const int DYNAMIC_PS_CHECK_TIMEOUT = 10 * 1000;
+const int DYNAMIC_PS_CHECK_TIMEOUT = 10 * 1000; // 10 seconds
+
+const int RADIOTEXT_CLEAR_TIMEOUT = 1 * 60 * 1000; // One minute
+const int RTPLUS_CHECK_TIMEOUT = 700;
+
+enum TimerId{ RtPlusCheck = 999 };
+
+const QLatin1String HTML_TAG_START( "<font color='cyan'><u>" );
+const QLatin1String HTML_TAG_END( "</u></font>" );
 
 /*!
  *
@@ -124,8 +132,10 @@
  */
 void RadioStationModelPrivate::tunedToFrequency( uint frequency, int reason )
 {
-    if ( reason == TuneReason::Seek ) {
-        addScannedFrequency( frequency );
+    if ( !mRadioTextHolder.isEmpty() ) {
+        mRadioTextHolder.clear();
+        Q_Q( RadioStationModel );
+        mUiEngine.api().cancelTimer( RtPlusCheck, q );
     }
 
     setCurrentStation( frequency );
@@ -259,9 +269,19 @@
         LOG( "Unable to find current station. Ignoring RDS" );
         return;
     }
-    station.setRadioText( radioText );
-    q->saveStation( station );
+
     mUiEngine.api().historyModel().clearRadioTextPlus();
+
+    mRadioTextHolder = radioText;
+    mRadioTextPlusItems.clear();
+
+    if ( !radioText.isEmpty() ) {
+        mUiEngine.api().startTimer( RTPLUS_CHECK_TIMEOUT, RtPlusCheck,
+                                    q, SLOT(rtPlusCheckEnd()) );
+    } else {
+        station.setRadioText( "" );
+        q->saveStation( station );
+    }
 }
 
 /*!
@@ -270,15 +290,29 @@
  */
 void RadioStationModelPrivate::setCurrentRadioTextPlus( uint frequency, int rtClass, const QString& rtItem )
 {
+    LEVEL2( LOG_METHOD );
+
     Q_Q( RadioStationModel );
     RadioStation station = q->findStation( frequency, FindCriteria::IncludeManualStation );
     if ( !station.isValid() ) {
         LOG( "Unable to find current station. Ignoring RDS" );
         return;
     }
-    station.setRadioTextPlus( rtClass, rtItem );
-    q->saveStation( station );
-    mUiEngine.api().historyModel().addRadioTextPlus( rtClass, rtItem, station );
+
+    if ( mRadioTextPlusItems.isEmpty() ) { // First RT tag has arrived
+
+        const RtPlus::Tag tag = recognizeRtPlusTag( rtClass );
+        mRadioTextPlusItems.insert( tag, rtItem );
+
+    } else { // Second RT tag has arrived
+
+        const RtPlus::Tag tag = recognizeRtPlusTag( rtClass );
+        mRadioTextPlusItems.insert( tag, rtItem );
+
+        handleRadioTextPlus( mRadioTextPlusItems, station );
+        mRadioTextPlusItems.clear();
+
+    }
 }
 
 /*!
@@ -320,6 +354,42 @@
 /*!
  *
  */
+void RadioStationModelPrivate::doRemoveStation( const RadioStation& station, bool signalFrequency )
+{
+    Q_Q( RadioStationModel );
+    const uint frequency = station.frequency();
+    if ( mStations.contains( frequency ) ) {
+
+        // If we are removing the current station, copy its data to the current station pointer
+        // to keep all of the received RDS data still available. Name and favorite setting have  
+        // to be cleared. Station data will be discarded when the user tunes to another frequency, 
+        // but they are available if the user decides to add it back.
+        if ( mCurrentStation->frequency() == frequency ) {
+            *mCurrentStation = station;
+            mCurrentStation->setFavorite( false );
+            mCurrentStation->setUserDefinedName( "" );
+            q->emitChangeSignals( *mCurrentStation, mCurrentStation->changeFlags() );
+        }
+
+        const int row = q->indexFromFrequency( station.frequency() );
+        q->beginRemoveRows( QModelIndex(), row, row );
+        
+        mPresetStorage->deletePreset( station.presetIndex() );
+        mStations.remove( frequency );
+
+        mCurrentStation = NULL;
+        setCurrentStation( mWrapper->currentFrequency() );
+        
+        q->endRemoveRows();
+        if( signalFrequency ) {
+            emit q->stationsRemoved( QList<uint>() << frequency );
+        }
+    }
+}
+
+/*!
+ *
+ */
 QList<RadioStation> RadioStationModelPrivate::favorites() const
 {
     QList<RadioStation> favoriteList;
@@ -344,3 +414,77 @@
     }
     return localList;
 }
+
+/*!
+ *
+ */
+void RadioStationModelPrivate::startRadioTextClearTimer()
+{
+    Q_Q( RadioStationModel );
+    mUiEngine.api().startTimer( RADIOTEXT_CLEAR_TIMEOUT,
+                                static_cast<int>( mCurrentStation->frequency() ),
+                                q,
+                                SLOT(clearRadiotext(int)) );
+}
+
+/*!
+ *
+ */
+RtPlus::Tag RadioStationModelPrivate::recognizeRtPlusTag( int rtClass )
+{
+    switch ( rtClass ) {
+
+        case RtPlus::Dummy:
+            return RtPlus::Dummy;
+
+        case RtPlus::Title:
+            return RtPlus::Title;
+
+        case RtPlus::Artist:
+            return RtPlus::Artist;
+
+        case RtPlus::Band:
+            return RtPlus::Band;
+
+        case RtPlus::Homepage:
+            return RtPlus::Homepage;
+
+        default:
+            break;
+    }
+
+    return RtPlus::Unknown;
+}
+
+/*!
+ *
+ */
+void RadioStationModelPrivate::handleRadioTextPlus( const RtPlusMap& rtItems, RadioStation& station )
+{
+    Q_Q( RadioStationModel );
+    if ( rtItems.contains( RtPlus::Homepage ) ) {
+
+        station.setUrl( rtItems.value( RtPlus::Homepage ) );
+        q->saveStation( station );
+
+    } else if ( rtItems.contains( RtPlus::Artist ) || rtItems.contains( RtPlus::Title ) ) {
+
+        mUiEngine.api().cancelTimer( RtPlusCheck, q );
+
+        QList<RtPlus::Tag> tags;
+        tags << RtPlus::Artist << RtPlus::Title;
+        foreach( RtPlus::Tag tag, tags ) {
+            QString item = rtItems.value( tag );
+            if ( !item.isEmpty() ) {
+                const QString replacement = HTML_TAG_START + item + HTML_TAG_END;
+                mRadioTextHolder.replace( item, replacement );
+            }
+        }
+        station.setRadioText( mRadioTextHolder );
+        mRadioTextHolder.clear();
+        q->saveStation( station );
+        startRadioTextClearTimer();
+        mUiEngine.api().historyModel().addItem( rtItems.value( RtPlus::Artist ), rtItems.value( RtPlus::Title ), station );
+
+    }
+}
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioapp/radiouiengine/src/radiotimerpool.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,196 @@
+/*
+* 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 <QTimer>
+#include <QMetaMethod>
+
+// User includes
+#include "radiotimerpool.h"
+#include "radiologger.h"
+
+const int TIMER_BUFFER_SIZE = 2;
+
+/*!
+ *
+ */
+RadioTimerPool::RadioTimerItem::RadioTimerItem( RadioTimerPool* parent ) :
+    mTimer( new QTimer() )
+{
+    Radio::connect( mTimer.data(),  SIGNAL(timeout()),
+                    parent,         SLOT(timerFired()) );
+    mTimer->setSingleShot( true );
+}
+
+/*!
+ *
+ */
+RadioTimerPool::RadioTimerItem::~RadioTimerItem()
+{
+}
+
+/*!
+ *
+ */
+void RadioTimerPool::RadioTimerItem::reset()
+{
+    mTimer->stop();
+    mId = -1;
+    mParam = QVariant();
+    mReceiver = NULL;
+    mReceiverMember.clear();
+}
+
+/*!
+ *
+ */
+RadioTimerPool::RadioTimerPool( QObject* parent ) :
+    QObject( parent )
+{
+    createItem();
+}
+
+/*!
+ *
+ */
+RadioTimerPool::~RadioTimerPool()
+{
+    qDeleteAll( mTimerMap.values() );
+}
+
+/*!
+ *
+ */
+void RadioTimerPool::startTimer( int msec, int id, QObject* receiver, const char* member, QVariant param )
+{
+    LOG_METHOD;
+    RadioTimerItem* availableItem = NULL;
+    foreach ( RadioTimerItem* item, mTimerMap.values() ) {
+        if ( !item->mTimer->isActive() ) {
+            availableItem = item;
+        } else {
+            if ( item->mReceiver == receiver && item->mId == id ) {
+                LOG_FORMAT( "RadioTimerPool::startTimer. Timer %d already running for class %s", id, receiver->metaObject()->className() );
+            }
+        }
+    }
+
+    if ( !availableItem ) {
+        availableItem = createItem();
+        LOG( "RadioTimerPool::startTimer. Creating new timer" );
+    }
+    LOG_FORMAT( "Amount of timers: %d", mTimerMap.count() );
+
+    availableItem->mId = id;
+    availableItem->mParam = param;
+    availableItem->mReceiver = receiver;
+
+    // SIGNAL() and SLOT() macros add a number in the beginning of member function name for some internal housekeeping
+    // That causes the method to not be found from the meta object so we need to trim it off
+    availableItem->mReceiverMember = member;
+    availableItem->mReceiverMember = availableItem->mReceiverMember.right( availableItem->mReceiverMember.length() - 1 );
+
+    availableItem->mTimer->start( msec );
+}
+
+/*!
+ *
+ */
+void RadioTimerPool::cancelTimer( int id, const QObject* receiver )
+{
+    foreach ( RadioTimerItem* item, mTimerMap.values() ) {
+        if ( item->mId == id && item->mReceiver == receiver ) {
+            item->reset();
+            break;
+        }
+    }
+    freeUnusedTimers();
+}
+
+/*!
+ *
+ */
+bool RadioTimerPool::isTimerActive( int id, const QObject* receiver ) const
+{
+    foreach ( const RadioTimerItem* item, mTimerMap.values() ) {
+        if ( item->mId == id &&
+             item->mReceiver == receiver &&
+             item->mTimer->isActive() ) {
+            return true;
+        }
+    }
+    return false;
+}
+
+/*!
+ *
+ */
+void RadioTimerPool::freeUnusedTimers()
+{
+    QList<RadioTimerItem*> unusedItems;
+    foreach ( RadioTimerItem* item, mTimerMap.values() ) {
+        if ( !item->mTimer->isActive() ) {
+            unusedItems.append( item );
+        }
+    }
+
+    if ( unusedItems.count() > TIMER_BUFFER_SIZE ) {
+        foreach( const RadioTimerItem* item, unusedItems ) {
+            mTimerMap.remove( item->mTimer.data() );
+            delete item;
+        }
+    }
+}
+
+/*!
+ * Private slot
+ */
+void RadioTimerPool::timerFired()
+{
+    QTimer* timer = static_cast<QTimer*>( sender() );
+    if ( mTimerMap.contains( timer ) ) {
+        RadioTimerItem* item = mTimerMap.value( timer );
+        if ( item->mReceiver ) {
+            QByteArray normalizedSignature = QMetaObject::normalizedSignature( item->mReceiverMember.toAscii().constData() );
+            int methodIndex = item->mReceiver->metaObject()->indexOfMethod( normalizedSignature );
+            if ( methodIndex != -1 ) {
+                QMetaMethod method = item->mReceiver->metaObject()->method( methodIndex );
+                const int paramCount = method.parameterTypes().count();
+                if ( paramCount == 0 ) {
+                    method.invoke( item->mReceiver, Qt::QueuedConnection );
+                } else if ( paramCount == 1 ) {
+                    method.invoke( item->mReceiver, Qt::QueuedConnection, Q_ARG( int, item->mId ) );
+                } else if ( paramCount == 2 ) {
+                    method.invoke( item->mReceiver, Qt::QueuedConnection,
+                                   Q_ARG( int, item->mId ), Q_ARG( QVariant, item->mParam ) );
+                }
+            }
+
+            item->reset();
+        }
+    }
+}
+
+/*!
+ *
+ */
+RadioTimerPool::RadioTimerItem* RadioTimerPool::createItem()
+{
+    RadioTimerItem* item = new RadioTimerItem( this );
+    mTimerMap.insert( item->mTimer.data(), item );
+    return item;
+}
--- a/radioapp/radiouiengine/src/radiouiengine.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/src/radiouiengine.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -39,6 +39,7 @@
 #include "radiosettings.h"
 #include "radioscannerengine.h"
 #include "radiogenrelocalizer.h"
+#include "radiotimerpool.h"
 #include "radiologger.h"
 
 // Constants
@@ -58,6 +59,8 @@
 const QLatin1String RADIO_RANGE_USEURO( "useuro" );
 const QLatin1String RADIO_RANGE_JAPAN( "japan" );
 
+enum TimerId { PowerOff };
+
 // ====== STATIC FUNCTIONS ========
 
 /*!
@@ -180,12 +183,7 @@
 {
     setMute( false );
 
-    Q_D( RadioUiEngine );
-    if ( d->mPowerOffTimer ) {
-        d->mPowerOffTimer->stop();
-        d->mPowerOffTimer->deleteLater();
-        d->mPowerOffTimer = NULL;
-    }
+    cancelTimer( PowerOff, this );
 }
 
 /*!
@@ -193,20 +191,14 @@
  */
 void RadioUiEngine::setPowerOff( int delay )
 {
-    Q_D( RadioUiEngine );
-    d->mEngineWrapper->setMute( true, false );
-
     if ( delay > 0 ) {
-        if ( !d->mPowerOffTimer ) {
-            d->mPowerOffTimer = new QTimer( this );
-            Radio::connect( d->mPowerOffTimer,  SIGNAL(timeout()),
-                            this,               SIGNAL(powerOffRequested()) );
-        }
-
-        d->mPowerOffTimer->start( delay );
+        startTimer( delay, PowerOff, this, SIGNAL(powerOffRequested()) );
     } else {
         emit powerOffRequested();
     }
+
+    Q_D( RadioUiEngine );
+    d->mEngineWrapper->setMute( true, false );
 }
 
 /*!
@@ -214,8 +206,7 @@
  */
 bool RadioUiEngine::isPoweringOff() const
 {
-    Q_D( const RadioUiEngine );
-    return d->mPowerOffTimer && d->mPowerOffTimer->isActive();
+    return isTimerActive( PowerOff, this );
 }
 
 /*!
@@ -476,6 +467,35 @@
 }
 
 /*!
+ *
+ */
+void RadioUiEngine::startTimer( int msec, int id, QObject* receiver, const char* member, QVariant param )
+{
+    Q_D( RadioUiEngine );
+    d->mTimerPool->startTimer( msec, id, receiver, member, param );
+}
+
+/*!
+ *
+ */
+void RadioUiEngine::cancelTimer( int id, const QObject* receiver )
+{
+    Q_D( RadioUiEngine );
+    if ( d->mTimerPool ) {
+        d->mTimerPool->cancelTimer( id, receiver );
+    }
+}
+
+/*!
+ *
+ */
+bool RadioUiEngine::isTimerActive( int id, const QObject* receiver ) const
+{
+    Q_D( const RadioUiEngine );
+    return d->mTimerPool->isTimerActive( id, receiver );
+}
+
+/*!
  * Public slot
  * volume update command slot for the engine
  */
--- a/radioapp/radiouiengine/src/radiouiengine_p.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiouiengine/src/radiouiengine_p.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -39,6 +39,7 @@
 #include "radiostationhandlerif.h"
 #include "radiocontrolservice.h"
 #include "radiomonitorservice.h"
+#include "radiotimerpool.h"
 #include "radioservicedef.h"
 #include "radiologger.h"
 
@@ -46,8 +47,7 @@
  *
  */
 RadioUiEnginePrivate::RadioUiEnginePrivate( RadioUiEngine* engine ) :
-    q_ptr( engine ),
-    mPowerOffTimer( NULL )
+    q_ptr( engine )
 {
 }
 
@@ -79,6 +79,8 @@
  */
 bool RadioUiEnginePrivate::init()
 {
+    mTimerPool.reset( new RadioTimerPool() );
+
     mControlService.reset( new RadioControlService( *q_ptr ) );
     mMonitorService.reset( new RadioMonitorService( *this ) );
     mStationModel.reset( new RadioStationModel( *this ) );
--- a/radioapp/radiowidgets/inc/radiocarouselanimator.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiocarouselanimator.h	Fri Oct 15 16:26:27 2010 +0300
@@ -61,7 +61,7 @@
 
     void stopAll();
 
-private slots:
+private Q_SLOTS:
 
     void handleTimeout();
     void updateNumberScroll( int value );
--- a/radioapp/radiowidgets/inc/radiocarouselitem.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiocarouselitem.h	Fri Oct 15 16:26:27 2010 +0300
@@ -94,7 +94,7 @@
 
     void drawOffScreen( QPainter& painter );
 
-public slots:
+public Q_SLOTS:
 
     void updatePrimitives();
 
@@ -117,6 +117,8 @@
 
     QScopedPointer<RadioStation>        mStation;
 
+    uint                                mFrequency;
+
     HbIconItem*                         mFavoriteItem;
     HbTextItem*                         mGenreItem;
     HbTouchArea*                        mFavoriteTouchArea;
--- a/radioapp/radiowidgets/inc/radiocarouselitemobserver.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiocarouselitemobserver.h	Fri Oct 15 16:26:27 2010 +0300
@@ -18,6 +18,9 @@
 #ifndef RADIOCAROUSELITEMOBSERVER_H
 #define RADIOCAROUSELITEMOBSERVER_H
 
+// System includes
+#include <QtGlobal>
+
 class RadioStation;
 class QString;
 class HbIcon;
@@ -26,7 +29,7 @@
 {
 public:
 
-    virtual void handleIconClicked( const RadioStation& station ) = 0;
+    virtual void handleIconClicked( const uint frequency ) = 0;
     virtual void handleRadiotextClicked( const RadioStation& station ) = 0;
     virtual void handleUrlClicked( const RadioStation& station ) = 0;
     virtual QString localizeGenre( int genre ) = 0;
@@ -34,6 +37,7 @@
     virtual HbIcon favoriteIcon() const = 0;
     virtual HbIcon nonFavoriteIcon() const = 0;
     virtual RadioStation findStation( uint frequency ) = 0;
+    virtual bool isAntennaAttached() const = 0;
 
 };
 
--- a/radioapp/radiowidgets/inc/radiofadinglabel.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiofadinglabel.h	Fri Oct 15 16:26:27 2010 +0300
@@ -37,11 +37,11 @@
 
     void setTextWithoutFading( const QString& newText );
 
-public slots:
+public Q_SLOTS:
 
     void setText( const QString& newText );
 
-private slots:
+private Q_SLOTS:
 
     void effectFinished( HbEffect::EffectStatus status );
 
--- a/radioapp/radiowidgets/inc/radiofrequencyscanner.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiofrequencyscanner.h	Fri Oct 15 16:26:27 2010 +0300
@@ -45,15 +45,15 @@
 
     bool isAlive() const;
 
-signals:
+Q_SIGNALS:
 
     void frequencyScannerFinished();
 
-public slots:
+public Q_SLOTS:
 
     void cancelScanning();
 
-private slots:
+private Q_SLOTS:
 
     void delayedStart();
     void updateScanProgress( const RadioStation& station );
--- a/radioapp/radiowidgets/inc/radiofrequencystrip.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiofrequencystrip.h	Fri Oct 15 16:26:27 2010 +0300
@@ -43,7 +43,7 @@
 
     void setFrequency( const uint newFrequency, int reason, Scroll::Direction direction = Scroll::Shortest );
 
-signals:
+Q_SIGNALS:
 
     void frequencyChanged( uint frequency, int reason, int direction );
     void skipRequested( int skipMode );
--- a/radioapp/radiowidgets/inc/radiofrequencystripbase.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiofrequencystripbase.h	Fri Oct 15 16:26:27 2010 +0300
@@ -23,6 +23,7 @@
 #include <QHash>
 #include <HbEffect>
 #include <QColor>
+#include <HbIcon>
 
 // User includes
 #include "radiostripbase.h"
@@ -47,6 +48,7 @@
 public:
 
     RadioFrequencyStripBase( QGraphicsItem* parent = 0 );
+    ~RadioFrequencyStripBase();
 
     void setItemHeight( int itemHeight );
     int itemHeight() const;
@@ -65,18 +67,18 @@
 
     void updateFavorite( uint frequency );
 
-public slots:
+Q_SIGNALS:
+
+    void manualSeekChanged( bool manualSeek );
+
+public Q_SLOTS:
 
     void setScanningMode( bool isScanning );
 
-signals:
-
-    void manualSeekChanged( bool manualSeek );
-
-private slots:
+private Q_SLOTS:
 
     void initEmptyItems();
-    void removeStation( const QModelIndex& parent, int first, int last );
+    void stationsRemoved( const QList<uint>& frequencies );
     void updateStation( const QModelIndex& parent, int first, int last );
     void handleLeftButton();
     void handleRightButton();
@@ -221,6 +223,9 @@
 
     bool                        mIgnoreScrollingEnd;
 
+    HbIcon                      mStationIcon;
+    HbIcon                      mFavoriteIcon;
+
 };
 
 #endif // RADIOFREQUENCYSTRIPBASE_H
--- a/radioapp/radiowidgets/inc/radiofrequencystripdef.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiofrequencystripdef.h	Fri Oct 15 16:26:27 2010 +0300
@@ -93,11 +93,18 @@
     static const QLatin1String LEFT_BUTTON      ( "tv:left_button" );
     static const QLatin1String RIGHT_BUTTON     ( "tv:right_button" );
 
-    static const QLatin1String TEXT_COLOR_ATTRIBUTE( "text" );
-    const int MANUALSEEK_START_TIMEOUT = 400;
-    const int MANUALSEEK_END_TIMEOUT = 2000;
+    static const QLatin1String TEXT_COLOR_ATTRIBUTE( "qtc_radio_tuner_normal" );
+    const int MANUALSEEK_START_TIMEOUT = 200;
+    const int MANUALSEEK_END_TIMEOUT = 1000;
     const int MANUALSEEK_SIGNAL_DELAY = 300;
+    const int POS_ADJUST_DELAY_MS = 500;
 
+    const int DEFAULT_ITEM_HEIGHT_UNITS = 8;
+    const uint DEFAULT_MIN_FREQUENCY = 87500000;
+    const uint DEFAULT_MAX_FREQUENCY = 108000000;
+    const uint DEFAULT_FREQUENCY_STEP = 100000;
+
+    const int STATION_MARKER_SIZE = 12;
 }
 
 #endif // RADIOFREQUENCYSTRIPDEF_H
--- a/radioapp/radiowidgets/inc/radiohistoryview.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiohistoryview.h	Fri Oct 15 16:26:27 2010 +0300
@@ -51,7 +51,7 @@
     void setTaggedIcon( const HbIcon& taggedIcon );
     HbIcon taggedIcon() const;
 
-private slots:
+private Q_SLOTS:
 
     void updateViewMode();
     void openMultiSelection();
@@ -59,6 +59,7 @@
     void showContextMenu( const QModelIndex& index );
     void handleLongPress( HbAbstractViewItem* item );
     void toggleTagging();
+    void handleRemoveTag( HbAction* answer );
     void openOviStore();
     void openOtherStore();
     void addSongs();            // Temporary test code
--- a/radioapp/radiowidgets/inc/radiomainview.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiomainview.h	Fri Oct 15 16:26:27 2010 +0300
@@ -46,11 +46,7 @@
 
     void setScanningMode( bool scanning );
 
-signals:
-
-    void applicationReady();
-
-private slots:
+private Q_SLOTS:
 
     void setFrequencyFromWidget( uint frequency, int reason, int direction );
     void setFrequencyFromEngine( uint frequency, int reason );
--- a/radioapp/radiowidgets/inc/radiostationcarousel.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiostationcarousel.h	Fri Oct 15 16:26:27 2010 +0300
@@ -98,7 +98,7 @@
 
     bool isAntennaAttached() const;
 
-    void setScanningMode( bool scanning );
+    void setScanningMode( Scan::Status status );
     bool isInScanningMode() const;
 
     void cleanRdsData();
@@ -115,22 +115,21 @@
 
     void setLandscape( bool landscape );
 
-signals:
+Q_SIGNALS:
 
     void frequencyChanged( uint frequency, int reason, int direction );
     void skipRequested( int skipMode );
     void scanAnimationFinished();
 
-public slots:
+public Q_SLOTS:
 
     void updateAntennaStatus( bool connected );
 
-private slots:
+private Q_SLOTS:
 
     void scrollPosChanged( const QPointF& newPosition );
     void adjustAfterScroll();
     void update( const RadioStation& station );
-    void updateRadioText( const RadioStation& station );
     void updateStations();
     void timerFired();
 
@@ -148,7 +147,7 @@
 
 // from base class RadioCarouselItemObserver
 
-    void handleIconClicked( const RadioStation& station );
+    void handleIconClicked( const uint frequency );
     void handleRadiotextClicked( const RadioStation& station );
     void handleUrlClicked( const RadioStation& station );
     QString localizeGenre( int genre );
@@ -179,7 +178,7 @@
 
 private: // data
 
-    enum TimerMode { NoTimer, SetFrequency, RtPlusCheck, InfoText };
+    enum TimerMode { NoTimer, SetFrequency, InfoText };
 
     RadioUiEngine*                      mUiEngine;
 
@@ -191,8 +190,6 @@
     QTimer*                             mGenericTimer;
     TimerMode                           mTimerMode;
 
-    QString                             mRadioTextHolder;
-
     QWeakPointer<RadioCarouselAnimator> mAnimator;
 
     HbLabel*                            mInfoText;
--- a/radioapp/radiowidgets/inc/radiostationsview.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiostationsview.h	Fri Oct 15 16:26:27 2010 +0300
@@ -59,7 +59,7 @@
     void setNonFavoriteIcon( const HbIcon& nonFavoriteIcon );
     HbIcon nonFavoriteIcon() const;
 
-private slots:
+private Q_SLOTS:
 
     void handleClick( const QModelIndex& index );
     void handleLongPress( HbAbstractViewItem* item, const QPointF& coords );
--- a/radioapp/radiowidgets/inc/radioviewbase.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radioviewbase.h	Fri Oct 15 16:26:27 2010 +0300
@@ -68,13 +68,13 @@
 
     void bringToForeground();
 
-protected slots:
+protected Q_SLOTS:
 
     void updateAudioRouting( bool loudspeaker );
     void activatePreviousView();
     void quit();
 
-private slots:
+private Q_SLOTS:
 
     void handleUserAnswer( HbAction* answer );   // Needed by HbMessageBox inconvenience API
 
--- a/radioapp/radiowidgets/inc/radiowindow.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/inc/radiowindow.h	Fri Oct 15 16:26:27 2010 +0300
@@ -62,7 +62,7 @@
 
     QString orientationSection();
 
-public slots:
+public Q_SLOTS:
 
     void activateMainView();
 
@@ -70,7 +70,7 @@
 
     void activateHistoryView();
 
-private slots:
+private Q_SLOTS:
 
     void initView();
     void updateOrientation( Qt::Orientation orientation );
--- a/radioapp/radiowidgets/radiowidgets.pro	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/radiowidgets.pro	Fri Oct 15 16:26:27 2010 +0300
@@ -26,6 +26,7 @@
 
 INCLUDEPATH += inc
 INCLUDEPATH += ../radiouiengine/inc
+INCLUDEPATH += ../radioapplication/inc
 INCLUDEPATH += ../../common
 
 LIBS        += -lfmradiouiengine
--- a/radioapp/radiowidgets/src/radiocarouselitem.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/src/radiocarouselitem.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -56,6 +56,7 @@
  */
 RadioCarouselItem::RadioCarouselItem( RadioCarouselItemObserver& observer, QGraphicsItem* parent, bool registerCss ) :
     HbWidget( parent ),
+    mFrequency( 0 ),
     mObserver( observer ),
     mFavoriteItem( NULL ),
     mGenreItem( NULL ),
@@ -169,7 +170,7 @@
             if ( mFlags.testFlag( FavoriteTouchable ) &&
                     mFavoriteTouchArea->sceneBoundingRect().contains( mappedHotSpot ) ) {
 
-                mObserver.handleIconClicked( *mStation );
+                mObserver.handleIconClicked( mFrequency );
 
             } else if ( mFlags.testFlag( RadiotextTouchable ) &&
                     mRadiotextItem->sceneBoundingRect().contains( mappedHotSpot ) ) {
@@ -284,6 +285,7 @@
 void RadioCarouselItem::setStation( const RadioStation& station )
 {
     *mStation = station;
+    mFrequency = station.frequency();
 
     updateLayout();
 
@@ -295,7 +297,7 @@
  */
 uint RadioCarouselItem::frequency() const
 {
-    return mStation->frequency();
+    return mFrequency;
 }
 
 /*!
@@ -305,6 +307,7 @@
 {
     if ( station ) {
         *mStation = *station;
+        mFrequency = station->frequency();
         updateLayout();
     }
 
@@ -325,26 +328,29 @@
             mNameItem->setText( mStation->frequencyString() );
         }
 
-        if ( mStation->hasRadiotext() ) {
-            mRadiotextItem->setText( mStation->radioText() );
-        } else {
-            if ( mStation->hasDynamicPs() ) {
-                mRadiotextItem->setText( mStation->dynamicPsText() );
-            } else if ( hasName ) {
-                const QString loc = hbTrId( "txt_rad_list_l1_mhz_small" );
-                mRadiotextItem->setText( loc.arg( mStation->frequencyString() ) );
+        if ( mObserver.isAntennaAttached() ) {
+
+            if ( mStation->hasRadiotext() ) {
+                mRadiotextItem->setText( mStation->radioText() );
             } else {
-                mRadiotextItem->setText( "" );
+                if ( mStation->hasDynamicPs() ) {
+                    mRadiotextItem->setText( mStation->dynamicPsText() );
+                } else if ( hasName ) {
+                    const QString loc = hbTrId( "txt_rad_list_l1_mhz_small" );
+                    mRadiotextItem->setText( loc.arg( mStation->frequencyString() ) );
+                } else {
+                    mRadiotextItem->setText( "" );
+                }
             }
-        }
 
-        mUrlItem->setText( mStation->url() );
-        if ( mStation->hasUrl() ) {
-            HbStyle::setItemName( mUrlItem, URL_LABEL );
-            setFlags( UrlVisible | UrlTouchable );
-        } else {
-            HbStyle::setItemName( mUrlItem, "" ); // Clear the name so the item disappears from layout
-            clearFlags( UrlVisible | UrlTouchable );
+            mUrlItem->setText( mStation->url() );
+            if ( mStation->hasUrl() ) {
+                HbStyle::setItemName( mUrlItem, URL_LABEL );
+                setFlags( UrlVisible | UrlTouchable );
+            } else {
+                HbStyle::setItemName( mUrlItem, "" ); // Clear the name so the item disappears from layout
+                clearFlags( UrlVisible | UrlTouchable );
+            }
         }
 
         updateFavoriteIcon( mStation->isFavorite() );
@@ -360,16 +366,12 @@
 {
     LOG_FORMAT( "RadioCarouselItem::setFrequency: %d", frequency );
 
-    if ( mStation->hasName() && mStation->frequency() == frequency ) {
-        mNameItem->setText( mStation->name() );
-    } else {
-        mNameItem->setText( RadioStation::parseFrequency( frequency ) );
-    }
-
-
+    QString text = RadioStation::parseFrequency( frequency );
     if ( !mObserver.isInManualSeek() ) {
         *mStation = mObserver.findStation( frequency );
     }
+    mFrequency = frequency;
+    mNameItem->setText( text );
 }
 
 /*!
--- a/radioapp/radiowidgets/src/radiofrequencyscanner.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencyscanner.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -88,7 +88,7 @@
         mStripScrollTime = frequencyStrip->autoScrollTime();
         mCarouselScrollTime = carousel->autoScrollTime();
 
-        carousel->setScanningMode( true );
+        carousel->setScanningMode( Scan::ScanningInMainView );
         carousel->setAutoScrollTime( CAROUSEL_SCROLL_TIME );
         frequencyStrip->setAutoScrollTime( STRIP_SCROLL_TIME );
 
@@ -200,7 +200,7 @@
 
         RadioUtil::frequencyStrip()->setScanningMode( false );
         static_cast<RadioMainView*>( parent() )->setScanningMode( false );
-        RadioUtil::carousel()->setScanningMode( false );
+        RadioUtil::carousel()->setScanningMode( Scan::NotScanning );
     }
 
     deleteLater();
--- a/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencystrip.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -47,8 +47,8 @@
     RadioStationModel* stationModel = &mUiEngine->stationModel();
     Radio::connect( stationModel,   SIGNAL(rowsInserted(QModelIndex,int,int)),
                     this,           SLOT(updateStation(QModelIndex,int,int)) );
-    Radio::connect( stationModel,   SIGNAL(rowsAboutToBeRemoved(QModelIndex,int,int)),
-                    this,           SLOT(removeStation(QModelIndex,int,int)) );
+    Radio::connect( stationModel,   SIGNAL(stationsRemoved(const QList<uint>&)),
+                    this,           SLOT(stationsRemoved(const QList<uint>&)) );
     Radio::connect( stationModel,   SIGNAL(modelReset()),
                     this,           SLOT(initEmptyItems()) );
 }
--- a/radioapp/radiowidgets/src/radiofrequencystripbase.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/src/radiofrequencystripbase.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -1,19 +1,19 @@
 /*
-* 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:
-*
-*/
+ * 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 <HbDocumentLoader>
@@ -71,11 +71,11 @@
  */
 RadioFrequencyStripBase::RadioFrequencyStripBase( QGraphicsItem* parent ) :
     RadioStripBase( parent ),
-    mItemHeight( 8 ),
-    mMinFrequency( 87500000 ),
-    mMaxFrequency( 108000000 ),
-    mFrequencyStepSize( 100000 ),
-    mFrequency( 87500000 ),
+    mItemHeight( FrequencyStrip::DEFAULT_ITEM_HEIGHT_UNITS ),
+    mMinFrequency( FrequencyStrip::DEFAULT_MIN_FREQUENCY ),
+    mMaxFrequency( FrequencyStrip::DEFAULT_MAX_FREQUENCY ),
+    mFrequencyStepSize( FrequencyStrip::DEFAULT_FREQUENCY_STEP ),
+    mFrequency( FrequencyStrip::DEFAULT_MIN_FREQUENCY ),
     mSelectorImage( new QGraphicsPixmapItem( this ) ),
     mSeparatorPos( 0.0 ),
     mMaxWidth( 0 ),
@@ -86,12 +86,20 @@
     mManualSeekMode( false ),
     mLastReportedFrequency( 0 ),
     mManualSeekTimerId( 0 ),
-    mForegroundColor( Qt::white ),//HbColorScheme::color( FrequencyStrip::TEXT_COLOR_ATTRIBUTE ) )
+    mForegroundColor( HbColorScheme::color( FrequencyStrip::TEXT_COLOR_ATTRIBUTE ) ),
     mIgnoreScrollingEnd( false )
 {
 }
 
 /*!
+ *
+ */
+RadioFrequencyStripBase::~RadioFrequencyStripBase()
+{
+    qDeleteAll( mFrequencyItems );
+}
+
+/*!
  * Property
  */
 void RadioFrequencyStripBase::setItemHeight( int itemHeight )
@@ -125,6 +133,11 @@
 
     setOverlap( FrequencyStrip::PIXMAP_OVERLAP / 2 );
 
+    mStationIcon.setIconName("qtg_graf_tuner_unselected");
+    mFavoriteIcon.setIconName("qtg_graf_tuner_selected");
+    mStationIcon.setSize( QSizeF( FrequencyStrip::STATION_MARKER_SIZE, FrequencyStrip::STATION_MARKER_SIZE ) );
+    mFavoriteIcon.setSize( QSizeF( FrequencyStrip::STATION_MARKER_SIZE, FrequencyStrip::STATION_MARKER_SIZE ) );
+
     initModel();
     initEmptyItems();
     initPositions();
@@ -271,10 +284,20 @@
  * Private slot
  *
  */
-void RadioFrequencyStripBase::removeStation( const QModelIndex& parent, int first, int last )
+void RadioFrequencyStripBase::stationsRemoved( const QList<uint>& frequencies )
 {
-    Q_UNUSED( parent );
-    updateStationsInRange( first, last, true );
+    QList<uint>::const_iterator end = frequencies.constEnd();
+    QSet<RadioFrequencyItem*> freqItems;
+    // go frequencies list throught and fetch all frequencyItems required. Duplicates will be removed
+    // using set to prevent unneccessary item updates.
+    for( QList<uint>::const_iterator iter = frequencies.constBegin(); iter != end; ++iter ) {
+        freqItems.insert( mFrequencies.value( *iter ).mItem );                
+    }
+    QSet<RadioFrequencyItem*>::const_iterator setEnd = freqItems.constEnd();
+    QSet<RadioFrequencyItem*>::const_iterator setIter = freqItems.constBegin();
+    for( ; setIter != setEnd; ++setIter ) {
+        updateItem( *setIter, 0, 0 );             
+    }
 }
 
 /*!
@@ -355,10 +378,10 @@
     if ( mManualSeekMode ) {
         if ( !mPositions.contains( selectorPosition ) ) {
             if ( selectorPosition < mMaxWidth - FrequencyStrip::ITEM_WIDTH + mSeparatorPos ) {
-                scrollToFrequency( mMaxFrequency, Scroll::Shortest, 500 );
+                scrollToFrequency( mMaxFrequency, Scroll::Shortest, FrequencyStrip::POS_ADJUST_DELAY_MS );
                 emitFrequencyChanged( mMaxFrequency, FrequencyStrip::ManualSeekUpdate, Scroll::Shortest );
             } else {
-                scrollToFrequency( mMinFrequency, Scroll::Shortest, 500 );
+                scrollToFrequency( mMinFrequency, Scroll::Shortest, FrequencyStrip::POS_ADJUST_DELAY_MS );
                 emitFrequencyChanged( mMinFrequency, FrequencyStrip::ManualSeekUpdate, Scroll::Shortest );
             }
         }
@@ -495,7 +518,7 @@
  */
 void RadioFrequencyStripBase::timerEvent( QTimerEvent* event )
 {
-    Q_UNUSED( event );
+    RadioStripBase::timerEvent( event );
     if ( mLastReportedFrequency != mFrequency ) {
         mLastReportedFrequency = mFrequency;
         emitFrequencyChanged( mFrequency, FrequencyStrip::ManualSeekTune, Scroll::Shortest );
@@ -521,7 +544,7 @@
     mMaxWidth = list.count() * FrequencyStrip::ITEM_WIDTH;
 
     mSeparatorPos = qreal(FrequencyStrip::ITEM_WIDTH) / 2;
-    const uint minDrawableFreq = minFreq * FrequencyStrip::ONE_HERTZ - FrequencyStrip::HALF_HERTZ;;
+    const uint minDrawableFreq = minFreq * FrequencyStrip::ONE_HERTZ - FrequencyStrip::HALF_HERTZ;
     const uint maxDrawableFreq = maxFreq * FrequencyStrip::ONE_HERTZ + FrequencyStrip::HALF_HERTZ;
     mSeparatorPos += qreal( ( mMinFrequency  - minDrawableFreq ) / 2 ) / FrequencyStrip::PIXEL_IN_HZ;
     mSeparatorPos -= qreal( ( maxDrawableFreq - mMaxFrequency ) / 2 ) / FrequencyStrip::PIXEL_IN_HZ;
@@ -689,9 +712,8 @@
 
     QPainter painter( &pixmap );
     QPen normalPen = painter.pen();
-    QPen favoritePen = normalPen;
-    normalPen.setColor( mForegroundColor );
-    painter.setPen( normalPen );
+    normalPen.setColor(mForegroundColor);
+    painter.setPen(normalPen);
 
     const uint frequencyIncrement = qMin( mFrequencyStepSize, FrequencyStrip::ONE_HUNDRED_KHZ );
     const QString itemText = QString::number( mainFrequency / FrequencyStrip::ONE_HERTZ );
@@ -739,24 +761,17 @@
         }
     }
 
-    // Draw favorites and local stations
-    favoritePen.setColor( Qt::yellow );
-
     const int markerYPos = mItemHeight - 18;
+    const int markerHalf = FrequencyStrip::STATION_MARKER_SIZE / 2;
     foreach ( const FrequencyStrip::StationMarker& station, stations ) {
         const uint frequency = station.mFrequency;
-        pixels = qreal( frequency - startFrequency ) / FrequencyStrip::PIXEL_IN_HZ;
+        pixels = qreal(frequency - startFrequency) / FrequencyStrip::PIXEL_IN_HZ;
 
+        const QPoint point( int(pixels + leftOverlap - markerHalf ), markerYPos - markerHalf );
         if ( station.mIsFavorite ) {
-            favoritePen.setWidth( FrequencyStrip::PEN_WIDTH_FAVORITE );
-            painter.setPen( favoritePen );
-            painter.drawEllipse( int( pixels + leftOverlap - 3 ), markerYPos - 3, 6, 6 );
-//            painter.drawEllipse( int( pixels + leftOverlap - 3 ), FrequencyStrip::STATION_MARKER_Y_POS - 3, 6, 6 );
+            painter.drawPixmap( point, mFavoriteIcon.pixmap() );
         } else {
-            favoritePen.setWidth( 1 );
-            painter.setPen( favoritePen );
-            painter.drawEllipse( int( pixels + leftOverlap - 4 ), markerYPos - 4, 8, 8 );
-//            painter.drawEllipse( int( pixels + leftOverlap - 4 ), FrequencyStrip::STATION_MARKER_Y_POS - 4, 8, 8 );
+            painter.drawPixmap( point, mStationIcon.pixmap() );
         }
     }
 
@@ -825,9 +840,7 @@
 
     newPos -= mSelectorPos - FrequencyStrip::ROUNDER;
 
-//    scrollContentsTo( QPointF( newPos, 0 ), time );
-// TODO: Remove this and uncomment the above line. This is a temporary workaround to get the strip to move
-    scrollContentsTo( QPointF( newPos, 0 ), 0 );
+    scrollContentsTo( QPointF( newPos, 0 ), time );
 }
 
 /*!
--- a/radioapp/radiowidgets/src/radiohistoryview.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/src/radiohistoryview.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -196,16 +196,41 @@
  */
 void RadioHistoryView::toggleTagging()
 {
-    historyModel().toggleTagging( *mSelectedItem, mCurrentRow );
-    mSelectedItem->reset();
-    mCurrentRow = -1;
-    updateVisibilities();
+    bool favoriteMode = mTaggedSongsButton->isChecked();
+    if ( favoriteMode ) {
+        HbMessageBox::question( hbTrId( "txt_rad_info_remove_song_from_tagged_songs" ), this,
+                                SLOT(handleRemoveTag(HbAction*)), HbMessageBox::Yes | HbMessageBox::No );
+
+    } else {
+        historyModel().toggleTagging( *mSelectedItem, mCurrentRow );
+        mSelectedItem->reset();
+        mCurrentRow = -1;
+        updateVisibilities();
+    }
 }
 
 /*!
  * Private slot
  *
  */
+void RadioHistoryView::handleRemoveTag( HbAction* answer )
+{
+    HbDialog* dlg = static_cast<HbDialog*>( sender() );
+    if( dlg->actions().first() == answer ) {
+        historyModel().toggleTagging( *mSelectedItem, mCurrentRow );
+        mSelectedItem->reset();
+        mCurrentRow = -1;
+        updateVisibilities();
+    } else {
+        // Do Nothing
+    }
+}
+
+
+/*!
+ * Private slot
+ *
+ */
 void RadioHistoryView::openOviStore()
 {
     QString msg = "To be implemented: Open ovi store. Artist: %1, Title: %2";
@@ -263,7 +288,7 @@
     }
 
     mHistoryList = mUiLoader->findObject<HbListView>( DOCML::HV_NAME_HISTORY_LIST );
-    mHistoryList->setScrollingStyle( HbListView::PanOrFlick );
+    mHistoryList->setScrollingStyle( HbListView::PanWithFollowOn );
     mHistoryList->setModel( historyModel );
     mHistoryList->setSelectionMode( HbListView::NoSelection );
     mHistoryList->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
@@ -353,6 +378,7 @@
     // TODO: Get additional music stores. For now use "Amazon" for demonstration purposes
     const QString otherStoreFormatter = hbTrId( "txt_rad_menu_search_from_other_store" );
     if ( HbMenu* contextMenu = mUiLoader->findObject<HbMenu>( DOCML::HV_NAME_CONTEXT_MENU ) ) {
+        contextMenu->setParent( this );
         contextMenu->addAction( otherStoreFormatter.arg( "Amazon" ), this, SLOT(openOtherStore()) );
     }
 }
--- a/radioapp/radiowidgets/src/radiomainview.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/src/radiomainview.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -37,6 +37,7 @@
 #include "radioutil.h"
 #include "radiostationmodel.h"
 #include "radiofrequencyscanner.h"
+#include "radioapplication.h"
 
 // Constants
 const QLatin1String RADIO_MAINVIEW_ACTIVITY_ID( "FMRadioMainView" );
@@ -185,19 +186,19 @@
     const bool firsTimeStart = mUiEngine->isFirstTimeStart();
     const int rowCount = mUiEngine->stationModel().rowCount();
 
-   if ( firsTimeStart && rowCount == 0 ){
-            QTimer::singleShot( 4500, this, SLOT(startFirstTimeScanning()) );
-        }
-
+   if ( firsTimeStart && rowCount == 0 ) {
+        QTimer::singleShot( 4500, this, SLOT(startFirstTimeScanning()) );
+    }
 
     Radio::connect( static_cast<HbApplication*>( qApp ),    SIGNAL(aboutToQuit()),
                     this,                                   SLOT(saveActivity()) );
 
-    emit applicationReady();
-
     QScopedPointer<AfActivityStorage> storage( new AfActivityStorage() );
     bool ok = storage->removeActivity( RADIO_MAINVIEW_ACTIVITY_ID );
     LOG_ASSERT( ok, LOG( "Failed to remove old activity from Activity Storage!" ) );
+
+    // Send a signal to notify the automated tester that the application is ready
+    QTimer::singleShot( 0, static_cast<RadioApplication*>( qApp ), SIGNAL(applicationReady()) );
 }
 
 /*!
@@ -270,7 +271,8 @@
         if ( reason != TuneReason::FrequencyStrip &&
              reason != TuneReason::StationCarousel &&
              reason != TuneReason::Skip &&
-             reason != TuneReason::ManualSeekTune ) {
+             reason != TuneReason::ManualSeekTune &&
+             reason != TuneReason::StationScanFinalize ) {
             mCarousel->setFrequency( frequency, reason, Scroll::Shortest );
             mFrequencyStrip->setFrequency( frequency, reason, Scroll::Shortest );
         }
@@ -353,7 +355,7 @@
 void RadioMainView::seekingStarted()
 {
     if ( !RadioUtil::isScannerAlive() ) {
-        mCarousel->setInfoText( CarouselInfoText::Seeking );
+        mCarousel->setScanningMode( Scan::SeekingInMainView );
     }
 }
 
@@ -432,21 +434,16 @@
 
     // Draw the background and overlay
     // TODO: Uncomment when Orbit fixes the crash caused calling the pixmap() function.
-//    HbLabel* backgroundLabel = mUiLoader->findWidget<HbLabel>( DOCML::MV_NAME_CAROUSEL_BACKGROUND );
-//    painter.drawPixmap( 0, 0, backgroundLabel->icon().pixmap().scaled( screenShotSize ) );
-//    backgroundLabel = mUiLoader->findWidget<HbLabel>( DOCML::MV_NAME_CAROUSEL_OVERLAY );
-//    painter.drawPixmap( 0, 0, backgroundLabel->icon().pixmap().scaled( screenShotSize ) );
+    HbLabel* backgroundLabel = mUiLoader->findWidget<HbLabel>( DOCML::MV_NAME_CAROUSEL_BACKGROUND );
+    painter.drawPixmap( 0, 0, backgroundLabel->icon().pixmap().scaled( screenShotSize ) );
+    backgroundLabel = mUiLoader->findWidget<HbLabel>( DOCML::MV_NAME_CAROUSEL_OVERLAY );
+    painter.drawPixmap( 0, 0, backgroundLabel->icon().pixmap().scaled( screenShotSize ) );
 
     mCarousel->drawOffScreen( painter );
 
     QVariantHash metadata;
     metadata.insert( "screenshot", screenShot );
-
-    #ifdef __WINS__
-        screenShot.save( "c:\\radio.bmp" );
-    #elif defined BUILD_WIN32
-        screenShot.save( "radio.bmp" );
-    #endif
+    screenShot.save( "radio.bmp" );
 
     // Update the activity to the activity manager
     QScopedPointer<AfActivityStorage> storage( new AfActivityStorage() );
--- a/radioapp/radiowidgets/src/radiostationcarousel.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/src/radiostationcarousel.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -39,7 +39,6 @@
 #include "radio_global.h"
 
 // Constants
-const int RTPLUS_CHECK_TIMEOUT = 700;
 const int SET_FREQUENCY_TIMEOUT = 500;
 
 // Matti testing constants
@@ -196,7 +195,7 @@
     Radio::connect( mModel,         SIGNAL(stationDataChanged(RadioStation)),
                     this,           SLOT(update(RadioStation)));
     Radio::connect( mModel,         SIGNAL(radioTextReceived(RadioStation)),
-                    this,           SLOT(updateRadioText(RadioStation)));
+                    this,           SLOT(update(RadioStation)));
     Radio::connect( mModel,         SIGNAL(dynamicPsChanged(RadioStation)),
                     this,           SLOT(update(RadioStation)));
 
@@ -237,6 +236,12 @@
     if ( mModel ) {
         if ( !mManualSeekMode ) {
 
+            if ( reason == TuneReason::Seek ) {
+                const RadioStation station = findStation( frequency );
+                animateNewStation( station );
+                return;
+            }
+
             if ( mModel->rowCount() <= 1 ) {
                 mItems[LeftItem]->setStation( RadioStation() );
                 mItems[RightItem]->setStation( RadioStation() );
@@ -292,16 +297,28 @@
 /*!
  *
  */
-void RadioStationCarousel::setScanningMode( bool scanning )
+void RadioStationCarousel::setScanningMode( Scan::Status status )
 {
-    CALL_TO_ALL_ITEMS( setSeekLayout( scanning ) );
+    LOG_FORMAT( "RadioStationCarousel::setScanningMode status: %d", status );
+    if ( status == Scan::ScanningInMainView || Scan::SeekingInMainView ) {
+        CALL_TO_ALL_ITEMS( setSeekLayout( true ) );
+    } else {
+        CALL_TO_ALL_ITEMS( setSeekLayout( false ) );
+    }
 
-    if ( scanning ) {
+    if ( status == Scan::ScanningInMainView ) {
         setInfoText( CarouselInfoText::Scanning );
         if ( !mAnimator ) {
             mAnimator = new RadioCarouselAnimator( *this );
         }
         mAnimator.data()->startFlashingText();
+        setFrequency( DEFAULT_MIN_FREQUENCY, TuneReason::Unspecified, Scroll::Shortest );  
+    } else if ( status == Scan::SeekingInMainView ) {
+        setInfoText( CarouselInfoText::Seeking );
+        if ( !mAnimator ) {
+            mAnimator = new RadioCarouselAnimator( *this );
+            }
+        mAnimator.data()->startFlashingText();
     } else {
         if ( mAnimator ) {
             mAnimator.data()->stopFlashingText();
@@ -310,7 +327,12 @@
         setCenterIndex( 0 );
     }
 
-    setEnabled( !scanning );
+    if ( status == Scan::ScanningInMainView ) {
+        setEnabled( false );
+    } else {
+        setEnabled( true );
+    }
+
 }
 
 /*!
@@ -380,6 +402,11 @@
  */
 void RadioStationCarousel::clearInfoText()
 {
+    // cannot clear antenna txt if antenna is not yet connected
+    if( mInfoTextType == CarouselInfoText::ConnectAntenna && 
+        !isAntennaAttached() ) {
+        return;
+    }
     if ( mInfoTextType != CarouselInfoText::None ) {
         if ( mAnimator ) {
             mAnimator.data()->stopFlashingIcon();
@@ -473,24 +500,6 @@
 /*!
  * Private slot
  */
-void RadioStationCarousel::updateRadioText( const RadioStation& station )
-{
-    if ( isAntennaAttached() && !isInScanningMode() ) {
-        if ( station.radioText().isEmpty() ) {
-            mItems[CenterItem]->setRadioText( "" );
-        } else {
-            mRadioTextHolder = station.radioText();
-            mTimerMode = RtPlusCheck;
-            mGenericTimer->stop();
-            mGenericTimer->setInterval( RTPLUS_CHECK_TIMEOUT );
-            mGenericTimer->start();
-        }
-    }
-}
-
-/*!
- * Private slot
- */
 void RadioStationCarousel::updateStations()
 {
     if ( isInScanningMode() ) {
@@ -508,10 +517,6 @@
     if ( mTimerMode == SetFrequency ) {
         setCenterIndex( mCurrentIndex, NoSignal | IgnoreCenter );
         mTimerMode = NoTimer;
-    } else if ( mTimerMode == RtPlusCheck ) {
-        //mItems[CenterItem]->mRadiotextLabel->setText( mRadioTextHolder );
-        mRadioTextHolder = "";
-        mTimerMode = NoTimer;
     } else if ( mTimerMode == InfoText ) {
         clearInfoText();
         mTimerMode = NoTimer;
@@ -617,10 +622,11 @@
 /*!
  * \reimp
  */
-void RadioStationCarousel::handleIconClicked( const RadioStation& station )
+void RadioStationCarousel::handleIconClicked( const uint frequency )
 {
+    LOG_FORMAT( "RadioStationCarousel::handleIconClicked, frequency: %d", frequency );
     if ( mModel ) {
-        mModel->setData( QModelIndex(), station.frequency(), RadioRole::ToggleFavoriteRole );
+        mModel->setData( QModelIndex(), frequency, RadioRole::ToggleFavoriteRole );
     }
 }
 
@@ -721,8 +727,15 @@
 void RadioStationCarousel::scrollToIndex( int index, Scroll::Direction direction, ScrollMode mode )
 {
     if ( mModel && index >= 0  ) {
+        
+		// if scrolling allready, setup center index before executing
+		// additional scroll to maintain correct look 
+        if( isScrolling() ) {
+            setCenterIndex( mTargetIndex );
+        }
         mTargetIndex = index;
         const int difference = calculateDifference( index, direction );
+        LOG_FORMAT( "RadioStationCarousel::scrollToIndex difference: %d", difference );
         int scrollTime = mAutoScrollTime;
 
         int posX = direction == Scroll::Left ? -mMaxScrollPos : 0;
--- a/radioapp/radiowidgets/src/radiostationsview.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/src/radiostationsview.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -25,6 +25,7 @@
 #include <HbMenu>
 #include <HbSelectionDialog>
 #include <QSortFilterProxyModel>
+#include <HbColorScheme>
 
 // User includes
 #include "radiostationsview.h"
@@ -40,6 +41,7 @@
 // Constants
 const char* REGEX_SHOW_FAVORITES = "true";
 const char* REGEX_SHOW_ALL = ".+";
+static const QLatin1String NOW_PLAYING_ICON_COLOR( "qtc_list_item_title_normal" );
 
 /*!
  *
@@ -70,6 +72,7 @@
 void RadioStationsView::setNowPlayingIcon( const HbIcon& nowPlayingIcon )
 {
     mNowPlayingIcon = nowPlayingIcon;
+    mNowPlayingIcon.setColor( HbColorScheme::color( NOW_PLAYING_ICON_COLOR ) );
 }
 
 /*!
@@ -133,6 +136,7 @@
     Q_UNUSED( item );
 
     HbMenu* menu = mUiLoader->findObject<HbMenu>( DOCML::NAME_CONTEXT_MENU );
+    menu->setParent( this );
 
     *mSelectedStation = mFilterModel->data( item->modelIndex(), RadioRole::RadioStationRole ).value<RadioStation>();
 
@@ -431,7 +435,7 @@
  */
 void RadioStationsView::initListView()
 {
-    mStationsList->setScrollingStyle( HbListView::PanOrFlick );
+    mStationsList->setScrollingStyle( HbListView::PanWithFollowOn );
     mStationsList->setModel( mFilterModel );
     mStationsList->setSelectionMode( HbListView::NoSelection );
     mStationsList->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding );
--- a/radioapp/radiowidgets/src/radiostripbase.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/src/radiostripbase.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -34,7 +34,7 @@
     mIsCyclic( true ),
     mAutoCenter( false ),
     mOverlap( 0 ),
-    mItemPoolParent( new QGraphicsWidget( NULL ) ),
+    mItemPoolParent( new QGraphicsWidget( this ) ),
     mCurrentIndex( 0 ),
     mPressedIndex( 0 ),
     mStripLength( 0 ),
--- a/radioapp/radiowidgets/src/radioutil.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioapp/radiowidgets/src/radioutil.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -29,8 +29,6 @@
 
 // Constants
 
-static RadioUtil* theInstance = 0;
-
 /*!
  *
  */
@@ -202,9 +200,7 @@
  */
 RadioUtil& RadioUtil::instance()
 {
-    if ( !::theInstance ) {
-        ::theInstance = new RadioUtil;
-    }
-    return *::theInstance;
+    static RadioUtil gInstance;
+    return gInstance;
 }
 
--- a/radioengine/engine/src/cradioengineimp.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/engine/src/cradioengineimp.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -59,7 +59,7 @@
 const TInt KRadioRadioSwitchDelay = 300; // In milliseconds
 
 const TInt KRadioThousand = 1000;
-const TInt KRadioMillion = KRadioThousand * KRadioThousand;
+const TInt KRadioVolumeRampUpDelay = 200000;
 
 // Country order from timezones.rss. Default = 0, Japan = 1, America = 2.
 const TUint KCityGroupRegions[] =
@@ -569,10 +569,11 @@
         OkToPlay( iSettings->EngineSettings().TunedFrequency() ) )
         {
         SetAudioMode( iSettings->EngineSettings().OutputMode() );
-        iPlayerUtility->SetVolumeRamp( TTimeIntervalMicroSeconds( MAKE_TINT64( 0, KRadioMillion ) ) );
+        iPlayerUtility->SetVolumeRamp( TTimeIntervalMicroSeconds( MAKE_TINT64( 0, KRadioVolumeRampUpDelay ) ) );
         iPlayerUtility->SetVolume( TunerVolumeForUiVolume( iSettings->EngineSettings().Volume() ) );
 
         iPlayerUtility->Mute( iSettings->EngineSettings().IsVolMuted() );
+        iTunerUtility->SetSquelch( EFalse );
         iTunerUtility->SetFrequency( iSettings->EngineSettings().TunedFrequency() );
         iFreqEventReason = RadioEngine::ERadioFrequencyEventReasonImplicit;
 
--- a/radioengine/engine/stub/bwins/fmradioengine_stubu.def	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/engine/stub/bwins/fmradioengine_stubu.def	Fri Oct 15 16:26:27 2010 +0300
@@ -1,4 +1,4 @@
 EXPORTS
-	??1CRadioEngine@@UAE@XZ @ 1 NONAME ; CRadioEngine::~CRadioEngine(void)
-	?NewL@CRadioEngine@@SAPAV1@AAVMRadioEngineInitializer@@@Z @ 2 NONAME ; class CRadioEngine * CRadioEngine::NewL(class MRadioEngineInitializer &)
+	?NewL@CRadioEngine@@SAPAV1@XZ @ 1 NONAME ; class CRadioEngine * CRadioEngine::NewL(void)
+	??1CRadioEngine@@UAE@XZ @ 2 NONAME ; CRadioEngine::~CRadioEngine(void)
 
--- a/radioengine/engine/stub/eabi/fmradioengine_stubu.def	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/engine/stub/eabi/fmradioengine_stubu.def	Fri Oct 15 16:26:27 2010 +0300
@@ -1,5 +1,5 @@
 EXPORTS
-	_ZN12CRadioEngine4NewLER23MRadioEngineInitializer @ 1 NONAME
+	_ZN12CRadioEngine4NewLEv @ 1 NONAME
 	_ZN12CRadioEngineD0Ev @ 2 NONAME
 	_ZN12CRadioEngineD1Ev @ 3 NONAME
 	_ZN12CRadioEngineD2Ev @ 4 NONAME
--- a/radioengine/settings/src/cradioregion.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/settings/src/cradioregion.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -69,7 +69,7 @@
 
     CleanupStack::PushL( self );
     self->ConstructL( aRr );
-    CleanupStack::Pop();
+    CleanupStack::Pop( self );
 
     return self;
     }
--- a/radioengine/utils/api/cradioaudiorouter.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/api/cradioaudiorouter.h	Fri Oct 15 16:26:27 2010 +0300
@@ -76,9 +76,9 @@
     MRadioAudioRoutingObserver& iAudioRoutingObserver;
 
     /**
-     * Contains routable audios.
+     * Routable audio.
      */
-    RArray<CRadioRoutableAudio*> iRoutableAudios;
+    CRadioRoutableAudio* iRoutableAudio;
 
     };
 
--- a/radioengine/utils/api/cradioroutableaudio.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/api/cradioroutableaudio.h	Fri Oct 15 16:26:27 2010 +0300
@@ -40,6 +40,11 @@
 
 public:
 
+    /**
+     * Constructor.
+     * 
+     * @param aAudioRouter for setting routing. Ownership is moved.
+     */
     IMPORT_C CRadioRoutableAudio( CRadioAudioRouter* aAudioRouter );
 
     IMPORT_C ~CRadioRoutableAudio();
--- a/radioengine/utils/api/cradiosystemeventcollector.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/api/cradiosystemeventcollector.h	Fri Oct 15 16:26:27 2010 +0300
@@ -18,12 +18,14 @@
 #ifndef CRADIOSYSTEMEVENTCOLLECTOR_H
 #define CRADIOSYSTEMEVENTCOLLECTOR_H
 
+// System includes
 #include <e32std.h>
+#include <e32base.h>
 
 class MRadioSystemEventObserver;
 class MRadioAudioRoutingObserver;
 
-NONSHARABLE_CLASS( CRadioSystemEventCollector )
+NONSHARABLE_CLASS( CRadioSystemEventCollector ) : public CBase
     {
 public:
 
--- a/radioengine/utils/src/cradioaccessoryobserver.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/src/cradioaccessoryobserver.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -29,12 +29,12 @@
 
 #ifndef __WINS__
 // See accpolpropgenericid.h definitions KPCNokiaAV == 0x20000,
-// Forced to use hard coded value here to avoid including from epoc32/include/internal
+// Forced to use hard coded value here to avoid including from internal folder
 const TUint KPhysicalConnectionBitmask = 0x20000 | KPCWired;
 
 #else
 // See accpolpropgenericid.h definitions KPCNokiaAV == 0x20000, 
-// Forced to use hard coded value here to avoid including from epoc32/include/internal
+// Forced to use hard coded value here to avoid including from internal folder
 const TUint KPhysicalConnectionBitmask = 0x20000 | KPCWired;
 
 #endif // __WINS__
--- a/radioengine/utils/src/cradioaudiorouter.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/src/cradioaudiorouter.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -23,8 +23,6 @@
 #include "radioengineutils.h"
 
 
-const TInt KVisualRadioInitialRoutableAudioArraySize( 2 );
-
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
@@ -56,7 +54,6 @@
 EXPORT_C CRadioAudioRouter::~CRadioAudioRouter()
     {
     LEVEL3( LOG_METHOD_AUTO );
-    iRoutableAudios.Close();
     RadioEngineUtils::Release();
     }
 
@@ -68,7 +65,6 @@
     {
     RadioEngineUtils::InitializeL();
     LEVEL3( LOG_METHOD_AUTO );
-    iRoutableAudios = RArray<CRadioRoutableAudio*>( KVisualRadioInitialRoutableAudioArraySize );
     }
 
 // ---------------------------------------------------------------------------
@@ -78,11 +74,11 @@
 EXPORT_C void CRadioAudioRouter::SetAudioRouteL( RadioEngine::TRadioAudioRoute aAudioRoute )
     {
     LEVEL3( LOG_METHOD_AUTO );
-
-    for ( TInt i = 0; i < iRoutableAudios.Count(); ++i )
+    if ( NULL == iRoutableAudio )
         {
-        iRoutableAudios[i]->SetAudioRouteL( aAudioRoute );
+        User::Leave( KErrNotFound );
         }
+    iRoutableAudio->SetAudioRouteL( aAudioRoute );
     iAudioRoutingObserver.AudioRouteChangedL( aAudioRoute );
     }
 
@@ -93,24 +89,23 @@
 EXPORT_C void CRadioAudioRouter::RegisterRoutableAudio( CRadioRoutableAudio* aRoutableAudio )
     {
     LEVEL3( LOG_METHOD_AUTO );
-    iRoutableAudios.Append( aRoutableAudio );
+    if (iRoutableAudio)
+        {
+        LOG_FORMAT( "Reregistration, only one instance expected! Ptr1 = %p, ptr2 = %p", iRoutableAudio, aRoutableAudio );
+        __ASSERT_DEBUG( iRoutableAudio, User::Panic( _L("FMRadio" ), KErrAbort ) );
+        }
+    iRoutableAudio = aRoutableAudio;
     }
 
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
-EXPORT_C void CRadioAudioRouter::UnRegisterRoutableAudio( CRadioRoutableAudio* aRoutableAudio )
+EXPORT_C void CRadioAudioRouter::UnRegisterRoutableAudio( CRadioRoutableAudio* DEBUGVAR( aRoutableAudio ) )
     {
     LEVEL3( LOG_METHOD_AUTO );
-
-    TInt objectIndex = iRoutableAudios.Find( aRoutableAudio );
-
-    __ASSERT_DEBUG( objectIndex != KErrNotFound, User::Panic( _L("VisualRadio" ), KErrAbort ) );
+    __ASSERT_DEBUG( aRoutableAudio == iRoutableAudio, User::Panic( _L("FMRadio" ), KErrAbort ) );
 
-    if ( objectIndex != KErrNotFound )
-        {
-        iRoutableAudios.Remove( objectIndex );
-        }
+    iRoutableAudio = NULL;
     }
 
--- a/radioengine/utils/src/cradioremcontargetimp.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/src/cradioremcontargetimp.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -70,7 +70,7 @@
     CRadioRemConTargetImp* self = new ( ELeave ) CRadioRemConTargetImp();
     CleanupStack::PushL( self );
     self->ConstructL();
-    CleanupStack::Pop();
+    CleanupStack::Pop( self );
     return self;
     }
 
--- a/radioengine/utils/src/cradioroutableaudio.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/src/cradioroutableaudio.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -41,6 +41,7 @@
 //
 EXPORT_C CRadioRoutableAudio::~CRadioRoutableAudio()
     {
+    LEVEL3( LOG_METHOD_AUTO );
     iAudioRouter->UnRegisterRoutableAudio( this );
     delete iAudioOutput;
     delete iAudioRouter;
--- a/radioengine/utils/src/cradiosystemeventcollectorimp.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/src/cradiosystemeventcollectorimp.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -158,6 +158,7 @@
 // ---------------------------------------------------------------------------
 void CRadioSystemEventCollectorImp::AsObserver( MRadioAudioRoutingObserver*& obj )const
 {
+    LEVEL3( LOG_METHOD_AUTO );
     CRadioSystemEventCollectorImp *object = const_cast<CRadioSystemEventCollectorImp*>( this );
     obj = object;
 }
--- a/radioengine/utils/stub/inc/cradioaccessoryobserver_stub.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/stub/inc/cradioaccessoryobserver_stub.h	Fri Oct 15 16:26:27 2010 +0300
@@ -18,11 +18,15 @@
 #ifndef CRADIOACCESSORYOBSERVERSTUB_H
 #define CRADIOACCESSORYOBSERVERSTUB_H
 
+// System includes
 #include <AccessoryServer.h>
 #include <AccessoryConnection.h>
 #include <AccPolSubblockNameArray.h>
 #include <RadioStubManager.h>
 
+// User includes
+#include "cradiopropertyobserver.h"
+
 class MRadioHeadsetEventObserver;
 
 /**
@@ -33,6 +37,7 @@
  *
  */
 NONSHARABLE_CLASS( CRadioAccessoryObserver ): public CBase
+        , private MRadioPropertyChangeObserver
 {
 public:
 
@@ -67,6 +72,15 @@
      */
     TBool IsHeadsetConnectedL() const;
 
+protected:
+
+// from base class MRadioPropertyChangeObserver
+
+    void HandlePropertyChangeL( const TUid& aCategory, const TUint aKey, const TInt aValue );
+    void HandlePropertyChangeL( const TUid& aCategory, const TUint aKey, const TDesC8& aValue );
+    void HandlePropertyChangeL( const TUid& aCategory, const TUint aKey, const TDesC& aValue );
+    void HandlePropertyChangeErrorL( const TUid& aCategory, const TUint aKey, TInt aError );
+
 private:
 
     /**
@@ -85,6 +99,9 @@
     // RadioStubManagerChunk handle
     RChunk iRadioStubManagerChunk;
 
+    /** handler to Publish & Subscribe interface*/
+    CRadioPropertyObserver*     iHeadsetObserver;
+
 };
 
 #endif // CRADIOACCESSORYOBSERVERSTUB_H
--- a/radioengine/utils/stub/src/cradioaccessoryobserver_stub.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/stub/src/cradioaccessoryobserver_stub.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -1,19 +1,19 @@
 /*
-* 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 the License "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:
-*
-*/
+ * 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 the License "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:
+ *
+ */
 
 #include "cradioenginelogger.h"
 
@@ -31,7 +31,6 @@
     LOG_METHOD_AUTO;
     }
 
-
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
@@ -41,25 +40,29 @@
     LOG_METHOD_AUTO;
     // Open chunk for test configuration/control data
     TInt err = iRadioStubManagerChunk.OpenGlobal(
-            KRadioStubManagerLocalChunkName,
-            EFalse, // == Read | Write
-            EOwnerThread );
-    User::LeaveIfError( err );
-    if ( sizeof(SRadioStubManager) > iRadioStubManagerChunk.MaxSize() )
+            KRadioStubManagerLocalChunkName, EFalse, // == Read | Write
+            EOwnerThread);
+    User::LeaveIfError(err);
+    if (sizeof(SRadioStubManager) > iRadioStubManagerChunk.MaxSize())
         {
-        User::Leave( KErrTooBig );
+        User::Leave(KErrTooBig);
         }
     TUint8* basePtr = iRadioStubManagerChunk.Base();
-    User::LeaveIfNull( basePtr );    
-    iRadioStubManager = (SRadioStubManager*)basePtr;
-    if ( STUB.iLeaveNewL.iError )
+    User::LeaveIfNull(basePtr);
+    iRadioStubManager = (SRadioStubManager*) basePtr;
+    if (STUB.iLeaveNewL.iError)
+        {
+        User::Leave(STUB.iLeaveNewL.iError);
+        }
+    if (STUB.iLeaveConstructL.iError)
         {
-        User::Leave( STUB.iLeaveNewL.iError );
+        User::Leave(STUB.iLeaveConstructL.iError);
         }
-    if ( STUB.iLeaveConstructL.iError )
-        {
-        User::Leave( STUB.iLeaveConstructL.iError );
-        }
+    iHeadsetObserver = CRadioPropertyObserver::NewL(*this, KStub_KRadioPSUid,
+            SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected,
+            CRadioPropertyObserver::ERadioPropertyInt);
+    iHeadsetObserver->ActivateL();
+    STUB.iHeadsetConnected = iHeadsetObserver->ValueInt();
     }
 
 // ---------------------------------------------------------------------------
@@ -69,10 +72,10 @@
 CRadioAccessoryObserver* CRadioAccessoryObserver::NewL()
     {
     LOG_METHOD_AUTO;
-    CRadioAccessoryObserver* self = new( ELeave ) CRadioAccessoryObserver;
-    CleanupStack::PushL( self );
+    CRadioAccessoryObserver* self = new (ELeave) CRadioAccessoryObserver;
+    CleanupStack::PushL(self);
     self->ConstructL();
-    CleanupStack::Pop( self );
+    CleanupStack::Pop(self);
     return self;
     }
 
@@ -83,6 +86,7 @@
 CRadioAccessoryObserver::~CRadioAccessoryObserver()
     {
     LOG_METHOD_AUTO;
+    delete iHeadsetObserver;
     iRadioStubManagerChunk.Close();
     }
 
@@ -93,21 +97,87 @@
 TBool CRadioAccessoryObserver::IsHeadsetConnectedL() const
     {
     LOG_METHOD_AUTO;
-    if ( STUB.iLeaveIsHeadsetConnectedL.iError )
+    if (STUB.iLeaveIsHeadsetConnectedL.iError)
         {
-        User::Leave( STUB.iLeaveIsHeadsetConnectedL.iError );
+        User::Leave(STUB.iLeaveIsHeadsetConnectedL.iError);
         }
     return STUB.iHeadsetConnected;
     }
 
-
 // ---------------------------------------------------------------------------
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioAccessoryObserver::SetObserver( MRadioHeadsetEventObserver* aObserver )
+void CRadioAccessoryObserver::SetObserver(
+        MRadioHeadsetEventObserver* aObserver)
     {
     LOG_METHOD_AUTO;
     STUB.iObserver = aObserver;
     }
 
+// ---------------------------------------------------------------------------
+// Handling of the int property changes is done here.
+// Observer components are getting notifications in correspondence with what
+// has changed
+// ---------------------------------------------------------------------------
+//
+void CRadioAccessoryObserver::HandlePropertyChangeL(const TUid& aCategory,
+        const TUint aKey, const TInt aValue)
+    {
+    LEVEL2( LOG_METHOD_AUTO );
+    if ((KStub_KRadioPSUid == aCategory)
+            && (SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected
+                    == aKey))
+        {
+        STUB.iHeadsetConnected = aValue;
+        if (STUB.iHeadsetConnected)
+            {
+            if ( STUB.iObserver )
+                {
+                STUB.iObserver->HeadsetConnectedCallbackL();
+                }
+            }
+        else
+            {
+            if ( STUB.iObserver )
+                 {
+                 STUB.iObserver->HeadsetDisconnectedCallbackL();
+                 }
+            }
+        }
+    }
+
+// ---------------------------------------------------------------------------
+// Dummy version for WINS in order to avoid compiler warnings.
+// The real implementation of function is above.
+// ---------------------------------------------------------------------------
+//
+void CRadioAccessoryObserver::HandlePropertyChangeL(
+        const TUid& /*aCategory*/, const TUint /*aKey*/, const TDesC8& /*aValue*/)
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+// Handling of the text property changes is done here.
+// Observer components are getting notifications in correspondence with what
+// has changed
+// ---------------------------------------------------------------------------
+//
+void CRadioAccessoryObserver::HandlePropertyChangeL(
+        const TUid& /*aCategory*/, const TUint /*aKey*/, const TDesC& /*aValue*/)
+    {
+    LOG_METHOD_AUTO;
+    }
+
+// ---------------------------------------------------------------------------
+// This is a callback function which is called when a P&S components returns
+// an error
+// ---------------------------------------------------------------------------
+//
+void CRadioAccessoryObserver::HandlePropertyChangeErrorL(
+        const TUid& DEBUGVAR(aCategory), const TUint DEBUGVAR(aKey), TInt DEBUGVAR(aError) )
+    {
+    LOG_METHOD_AUTO;
+    LOG_FORMAT( "aCategory = %i, aKey = %i, aError = %i", aCategory, aKey, aError );
+    }
--- a/radioengine/utils/stub/src/cradioremcontargetimp_stub.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radioengine/utils/stub/src/cradioremcontargetimp_stub.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -1,19 +1,19 @@
 /*
-* 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 the License "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:
-*
-*/
+ * 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 the License "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 <RemConCallHandlingTarget.h>
@@ -48,41 +48,40 @@
 //
 void CRadioRemConTargetImp::ConstructL()
     {
-    LOG_METHOD_AUTO;;
+    LOG_METHOD_AUTO;
     // Open chunk for test configuration/control data
     TInt err = iRadioStubManagerChunk.OpenGlobal(
-            KRadioStubManagerLocalChunkName,
-            EFalse, // == Read | Write
-            EOwnerThread );
-    User::LeaveIfError( err );
-    if ( sizeof(SRadioStubManager) > iRadioStubManagerChunk.MaxSize() )
+            KRadioStubManagerLocalChunkName, EFalse, // == Read | Write
+            EOwnerThread);
+    User::LeaveIfError(err);
+    if (sizeof(SRadioStubManager) > iRadioStubManagerChunk.MaxSize())
         {
-        User::Leave( KErrTooBig );
+        User::Leave(KErrTooBig);
         }
     TUint8* basePtr = iRadioStubManagerChunk.Base();
-    User::LeaveIfNull( basePtr );
-    iRadioStubManager = (SRadioStubManager*)basePtr;
-    if ( STUB.iLeaveNewL.iError )
+    User::LeaveIfNull(basePtr);
+    iRadioStubManager = (SRadioStubManager*) basePtr;
+    if (STUB.iLeaveNewL.iError)
         {
-        User::Leave( STUB.iLeaveNewL.iError );
+        User::Leave(STUB.iLeaveNewL.iError);
         }
-    if ( STUB.iLeaveConstructL.iError )
+    if (STUB.iLeaveConstructL.iError)
         {
-        User::Leave( STUB.iLeaveConstructL.iError );
+        User::Leave(STUB.iLeaveConstructL.iError);
         }
     STUB.iRemConCoreApiTargetObserver = this;
     STUB.iRemConCallHandlingTargetObserver = this;
     RadioEngineUtils::InitializeL();
     // Create interface selector.
-        //iInterfaceSelector = CRemConInterfaceSelector::NewL();
+    //iInterfaceSelector = CRemConInterfaceSelector::NewL();
     // Create a new CRemConCoreApiTarget, owned by the interface selector.
-        //iCoreTarget = CRemConCoreApiTarget::NewL( *iInterfaceSelector, *this );
+    //iCoreTarget = CRemConCoreApiTarget::NewL( *iInterfaceSelector, *this );
     // Create a new CRemConCallHandlingTarget, owned by the interface selector.
-        //iCallTarget = CRemConCallHandlingTarget::NewL( *iInterfaceSelector, *this );
+    //iCallTarget = CRemConCallHandlingTarget::NewL( *iInterfaceSelector, *this );
     // Start being a target.
-        //iInterfaceSelector->OpenTargetL();
+    //iInterfaceSelector->OpenTargetL();
     // Create repeat timer.
-    iRepeatTimer = CPeriodic::NewL( CActive::EPriorityStandard );
+    iRepeatTimer = CPeriodic::NewL(CActive::EPriorityStandard);
     }
 
 // ---------------------------------------------------------------------------
@@ -91,9 +90,9 @@
 //
 CRadioRemConTargetImp* CRadioRemConTargetImp::NewL()
     {
-    LOG_METHOD_AUTO;;
-    CRadioRemConTargetImp* self = new ( ELeave ) CRadioRemConTargetImp();
-    CleanupStack::PushL( self );
+    LOG_METHOD_AUTO;
+    CRadioRemConTargetImp* self = new (ELeave) CRadioRemConTargetImp();
+    CleanupStack::PushL(self);
     self->ConstructL();
     CleanupStack::Pop();
     return self;
@@ -105,8 +104,8 @@
 //
 CRadioRemConTargetImp::~CRadioRemConTargetImp()
     {
-    LOG_METHOD_AUTO;;
-    if ( iRepeatTimer )
+    LOG_METHOD_AUTO;
+    if (iRepeatTimer)
         {
         iRepeatTimer->Cancel();
         }
@@ -122,9 +121,10 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::SetControlEventObserver( MRadioControlEventObserver* aControlEventObserver )
+void CRadioRemConTargetImp::SetControlEventObserver(
+        MRadioControlEventObserver* aControlEventObserver)
     {
-    LOG_METHOD_AUTO;;
+    LOG_METHOD_AUTO;
     iObserver = aControlEventObserver;
     }
 
@@ -132,92 +132,103 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::MrccatoCommand( TRemConCoreApiOperationId aOperationId,
-                                         TRemConCoreApiButtonAction aButtonAct )
+void CRadioRemConTargetImp::MrccatoCommand(
+        TRemConCoreApiOperationId aOperationId,
+        TRemConCoreApiButtonAction aButtonAct)
     {
     LOG_FORMAT( "aOperationId = %d, aButtonAct = %d", aOperationId, aButtonAct );
     LOG_METHOD_AUTO;
-    if ( iObserver )
+    if (iObserver)
         {
-        switch ( aOperationId )
+        switch (aOperationId)
             {
             case ERemConCoreApiChannelUp:
                 {
-                if ( aButtonAct == ERemConCoreApiButtonClick )
+                if (aButtonAct == ERemConCoreApiButtonClick)
                     {
                     TRAP_IGNORE( iObserver->ChannelUpL( ETrue ); iObserver->ChannelUpL( EFalse ))
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonPress )
+                else if (aButtonAct == ERemConCoreApiButtonPress)
                     {
                     TRAP_IGNORE( iObserver->ChannelUpL( ETrue ))
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                else if (aButtonAct == ERemConCoreApiButtonRelease)
                     {
                     TRAP_IGNORE( iObserver->ChannelUpL( EFalse ))
                     }
-                else {}
+                else
+                    {
+                    }
                 break;
                 }
             case ERemConCoreApiChannelDown:
                 {
-                if ( aButtonAct == ERemConCoreApiButtonClick )
+                if (aButtonAct == ERemConCoreApiButtonClick)
                     {
                     TRAP_IGNORE( iObserver->ChannelDownL( ETrue ); iObserver->ChannelDownL( EFalse ))
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonPress )
+                else if (aButtonAct == ERemConCoreApiButtonPress)
                     {
                     TRAP_IGNORE( iObserver->ChannelDownL( ETrue ))
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                else if (aButtonAct == ERemConCoreApiButtonRelease)
                     {
                     TRAP_IGNORE( iObserver->ChannelDownL( EFalse ))
                     }
-                else {}
+                else
+                    {
+                    }
                 break;
                 }
             case ERemConCoreApiVolumeUp:
                 {
-                if ( aButtonAct == ERemConCoreApiButtonClick )
+                if (aButtonAct == ERemConCoreApiButtonClick)
                     {
                     TRAP_IGNORE( iObserver->VolumeUpL( ETrue ); iObserver->VolumeUpL( EFalse ))
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonPress )
+                else if (aButtonAct == ERemConCoreApiButtonPress)
                     {
                     iRepeatTimer->Cancel();
                     iRepeatId = ERemConCoreApiVolumeUp;
-//                  iRepeatTimer->Start( KVRVolumeTimerInitialDelay, KAknStandardKeyboardRepeatRate, TCallBack( RepeatTimerCallback, this ));
-                    iRepeatTimer->Start( KVRVolumeTimerInitialDelay, 1000000, TCallBack( RepeatTimerCallback, this ));
+                    //                  iRepeatTimer->Start( KVRVolumeTimerInitialDelay, KAknStandardKeyboardRepeatRate, TCallBack( RepeatTimerCallback, this ));
+                    iRepeatTimer->Start(KVRVolumeTimerInitialDelay, 1000000,
+                            TCallBack(RepeatTimerCallback, this));
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                else if (aButtonAct == ERemConCoreApiButtonRelease)
                     {
                     iRepeatTimer->Cancel();
                     }
-                else {}
+                else
+                    {
+                    }
                 break;
                 }
             case ERemConCoreApiVolumeDown:
                 {
-                if ( aButtonAct == ERemConCoreApiButtonClick )
+                if (aButtonAct == ERemConCoreApiButtonClick)
                     {
                     TRAP_IGNORE( iObserver->VolumeDownL( ETrue ); iObserver->VolumeDownL( EFalse ))
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonPress )
+                else if (aButtonAct == ERemConCoreApiButtonPress)
                     {
                     iRepeatTimer->Cancel();
                     iRepeatId = ERemConCoreApiVolumeDown;
-//                  iRepeatTimer->Start( KVRVolumeTimerInitialDelay, KAknStandardKeyboardRepeatRate, TCallBack( RepeatTimerCallback, this ));
-                    iRepeatTimer->Start( KVRVolumeTimerInitialDelay, 1000000, TCallBack( RepeatTimerCallback, this ));
+                    //                  iRepeatTimer->Start( KVRVolumeTimerInitialDelay, KAknStandardKeyboardRepeatRate, TCallBack( RepeatTimerCallback, this ));
+                    iRepeatTimer->Start(KVRVolumeTimerInitialDelay, 1000000,
+                            TCallBack(RepeatTimerCallback, this));
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                else if (aButtonAct == ERemConCoreApiButtonRelease)
                     {
                     iRepeatTimer->Cancel();
                     }
-                else {}
+                else
+                    {
+                    }
                 break;
                 }
             case ERemConCoreApiStop:
                 {
-                if ( aButtonAct == ERemConCoreApiButtonClick )
+                if (aButtonAct == ERemConCoreApiButtonClick)
                     {
                     TRAP_IGNORE( iObserver->StopL( ETrue ); iObserver->StopL( EFalse ))
                     }
@@ -226,44 +237,48 @@
             case ERemConCoreApiBackward:
             case ERemConCoreApiRewind:
                 {
-                if ( aButtonAct == ERemConCoreApiButtonPress )
+                if (aButtonAct == ERemConCoreApiButtonPress)
                     {
                     TRAP_IGNORE( iObserver->RewindL( ETrue ))
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                else if (aButtonAct == ERemConCoreApiButtonRelease)
                     {
                     TRAP_IGNORE( iObserver->RewindL( EFalse ))
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonClick )
+                else if (aButtonAct == ERemConCoreApiButtonClick)
                     {
                     TRAP_IGNORE( iObserver->BackwardL( ETrue ); iObserver->BackwardL( EFalse ))
                     }
-                else {}
+                else
+                    {
+                    }
                 break;
                 }
             case ERemConCoreApiForward:
             case ERemConCoreApiFastForward:
                 {
-                if ( aButtonAct == ERemConCoreApiButtonPress )
+                if (aButtonAct == ERemConCoreApiButtonPress)
                     {
                     TRAP_IGNORE( iObserver->FastForwardL( ETrue ))
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonRelease )
+                else if (aButtonAct == ERemConCoreApiButtonRelease)
                     {
                     TRAP_IGNORE( iObserver->FastForwardL( EFalse ))
                     }
-                else if ( aButtonAct == ERemConCoreApiButtonClick )
+                else if (aButtonAct == ERemConCoreApiButtonClick)
                     {
                     TRAP_IGNORE( iObserver->ForwardL( ETrue ); iObserver->ForwardL( EFalse ))
                     }
-                else {}
+                else
+                    {
+                    }
                 break;
                 }
             case ERemConCoreApiPlay:
             case ERemConCoreApiPause:
             case ERemConCoreApiPausePlayFunction:
                 {
-                if ( aButtonAct == ERemConCoreApiButtonClick )
+                if (aButtonAct == ERemConCoreApiButtonClick)
                     {
                     TRAP_IGNORE( iObserver->PausePlayL( ETrue ); iObserver->PausePlayL( EFalse ))
                     }
@@ -281,13 +296,14 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::MrccatoPlay( TRemConCoreApiPlaybackSpeed /*aSpeed*/,
-                                      TRemConCoreApiButtonAction aButtonAct )
+void CRadioRemConTargetImp::MrccatoPlay(
+        TRemConCoreApiPlaybackSpeed /*aSpeed*/,
+        TRemConCoreApiButtonAction aButtonAct)
     {
     LOG_METHOD_AUTO;
-    if ( iObserver )
+    if (iObserver)
         {
-        if ( aButtonAct == ERemConCoreApiButtonClick )
+        if (aButtonAct == ERemConCoreApiButtonClick)
             {
             TRAP_IGNORE( iObserver->PlayL( ETrue ); iObserver->PlayL( EFalse ))
             }
@@ -298,10 +314,9 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::MrccatoTuneFunction( TBool /*aTwoPart*/,
-                                              TUint /*aMajorChannel*/,
-                                              TUint /*aMinorChannel*/,
-                                              TRemConCoreApiButtonAction /*aButtonAct*/)
+void CRadioRemConTargetImp::MrccatoTuneFunction(TBool /*aTwoPart*/,
+        TUint /*aMajorChannel*/, TUint /*aMinorChannel*/,
+        TRemConCoreApiButtonAction /*aButtonAct*/)
     {
     LOG_METHOD_AUTO;
     }
@@ -310,8 +325,8 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::MrccatoSelectDiskFunction( TUint /*aDisk*/,
-                                                    TRemConCoreApiButtonAction /*aButtonAct*/)
+void CRadioRemConTargetImp::MrccatoSelectDiskFunction(TUint /*aDisk*/,
+        TRemConCoreApiButtonAction /*aButtonAct*/)
     {
     LOG_METHOD_AUTO;
     }
@@ -320,8 +335,8 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::MrccatoSelectAvInputFunction( TUint8 /*aAvInputSignalNumber*/,
-                                                       TRemConCoreApiButtonAction /*aButtonAct*/)
+void CRadioRemConTargetImp::MrccatoSelectAvInputFunction(
+        TUint8 /*aAvInputSignalNumber*/, TRemConCoreApiButtonAction /*aButtonAct*/)
     {
     LOG_METHOD_AUTO;
     }
@@ -330,8 +345,8 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::MrccatoSelectAudioInputFunction( TUint8 /*aAudioInputSignalNumber*/,
-                                                          TRemConCoreApiButtonAction /*aButtonAct*/)
+void CRadioRemConTargetImp::MrccatoSelectAudioInputFunction(
+        TUint8 /*aAudioInputSignalNumber*/, TRemConCoreApiButtonAction /*aButtonAct*/)
     {
     LOG_METHOD_AUTO;
     }
@@ -340,17 +355,18 @@
 //
 // ---------------------------------------------------------------------------
 //
-TInt CRadioRemConTargetImp::RepeatTimerCallback( TAny* aPtr )
+TInt CRadioRemConTargetImp::RepeatTimerCallback(TAny* aPtr)
     {
     LOG_METHOD_AUTO;
 
-    CRadioRemConTargetImp* self = reinterpret_cast<CRadioRemConTargetImp*>( aPtr );
+    CRadioRemConTargetImp* self =
+            reinterpret_cast<CRadioRemConTargetImp*> (aPtr);
 
-    if ( self )
+    if (self)
         {
-        if ( self->iObserver )
+        if (self->iObserver)
             {
-            switch ( self->iRepeatId )
+            switch (self->iRepeatId)
                 {
                 case ERemConCoreApiVolumeUp:
                     {
@@ -389,7 +405,7 @@
 void CRadioRemConTargetImp::AnswerEndCall()
     {
     LOG_METHOD_AUTO;
-    if ( iObserver )
+    if (iObserver)
         {
         TRAP_IGNORE( iObserver->AnswerEndCallL())
         }
@@ -399,7 +415,7 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::DialCall( const TDesC8& /*aTelNumber*/ )
+void CRadioRemConTargetImp::DialCall(const TDesC8& /*aTelNumber*/)
     {
     LOG_METHOD_AUTO;
     }
@@ -417,7 +433,7 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::GenerateDTMF( const TChar /*aChar*/ )
+void CRadioRemConTargetImp::GenerateDTMF(const TChar /*aChar*/)
     {
     LOG_METHOD_AUTO;
     }
@@ -435,7 +451,7 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::MultipartyCalling( const TDesC8& /*aData*/ )
+void CRadioRemConTargetImp::MultipartyCalling(const TDesC8& /*aData*/)
     {
     LOG_METHOD_AUTO;
     }
@@ -444,7 +460,7 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::SpeedDial( const TInt /*aIndex*/ )
+void CRadioRemConTargetImp::SpeedDial(const TInt /*aIndex*/)
     {
     LOG_METHOD_AUTO;
     }
@@ -453,7 +469,7 @@
 //
 // ---------------------------------------------------------------------------
 //
-void CRadioRemConTargetImp::VoiceDial( const TBool /*aActivate*/ )
+void CRadioRemConTargetImp::VoiceDial(const TBool /*aActivate*/)
     {
     LOG_METHOD_AUTO;
     }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/bwins/UtilsTestModuleu.def	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	?LibEntryL@@YAPAVCScriptBase@@AAVCTestModuleIf@@@Z @ 1 NONAME ; class CScriptBase * LibEntryL(class CTestModuleIf &)
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/conf/UtilsTestModule.cfg	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,156 @@
+[Define]
+KErrNotFound				-1
+KErrGeneral                 -2
+KErrArgument				-6
+KErrDiskFull				-26
+KErrBadTestParameter		-1000
+KErrEventPending			-2000
+KErrCallbackErrorCode		-2001
+KErrUnexpectedValue			-2002
+KExpectedFrequencyChange	-2003
+KErrTimeoutController		-2007
+
+EFalse                      0
+ETrue                       1
+
+EPSCTsyCallStateUninitialized   0
+EPSCTsyCallStateNone            1
+EPSCTsyCallStateRinging         3
+
+ESANetworkAvailable             0
+ESANetworkUnAvailable           1
+[Enddefine]
+
+[Test]
+title Example
+create UtilsTestModule Utils
+Utils Example pa ra me ters
+delete Utils
+[Endtest] 
+
+// System Event Collector's tests
+
+[Test]
+title 1.1 Create System Event Collector
+create UtilsTestModule Utils
+Utils CreateSystemEventCollectorL
+Utils DestroySystemEventCollector
+delete Utils
+[Endtest]
+
+[Test]
+title 1.2 OOM for creation of System Event Collector
+create UtilsTestModule Utils
+oomignorefailure ON
+loop 19
+oomheapfailnext LOOP_COUNTER
+Utils CreateSystemEventCollectorL
+Utils DestroySystemEventCollector
+print LOOP_COUNTER
+endloop
+oomignorefailure OFF
+oomheaptonormal
+delete Utils
+[Endtest]
+
+[Test]
+title 1.3 OOM for creation of System Event Collector
+create UtilsTestModule Utils
+Utils OOMTestForCreation
+delete Utils
+[Endtest]
+
+[Test]
+title 1.4 Headset connection status
+create UtilsTestModule Utils
+Utils CreateSystemEventCollectorL
+Utils IsHeadsetConnectedL EFalse
+Utils tstSetPropertyValueForHeadset ETrue
+pause 1000
+Utils IsHeadsetConnectedL ETrue
+Utils DestroySystemEventCollector
+delete Utils
+[Endtest]
+
+[Test]
+title 1.5 Network status
+create UtilsTestModule Utils
+Utils CreateSystemEventCollectorL
+Utils IsNetworkCoverage ETrue
+Utils IsMobileNetworkCoverage ETrue
+Utils DestroySystemEventCollector
+delete Utils
+[Endtest]
+
+[Test]
+title 1.6 Call state
+create UtilsTestModule Utils
+Utils CreateSystemEventCollectorL
+Utils IsCallActive EFalse
+Utils tstSetPropertyValueForCallState EPSCTsyCallStateRinging
+pause 1000
+Utils IsCallActive ETrue
+Utils DestroySystemEventCollector
+delete Utils
+[Endtest]
+
+[Test]
+title 1.7 Audio resources availability
+create UtilsTestModule Utils
+Utils CreateSystemEventCollectorL
+Utils IsAudioResourcesAvailable ETrue
+Utils DestroySystemEventCollector
+delete Utils
+[Endtest]
+
+// Audio Router's tests
+
+[Test]
+title 2.1 Create Audio Router
+create UtilsTestModule Utils
+Utils CreateAudioRouterL
+Utils DestroyAudioRouter
+delete Utils
+[Endtest]
+
+[Test]
+title 2.2 OOM for creation of Audio Router
+create UtilsTestModule Utils
+oomignorefailure ON
+loop 10
+oomheapfailnext LOOP_COUNTER
+Utils CreateAudioRouterL
+Utils DestroyAudioRouter
+print LOOP_COUNTER
+endloop
+oomignorefailure OFF
+oomheaptonormal
+delete Utils
+[Endtest]
+
+[Test]
+title 2.3 OOM for creation of Audio Router
+create UtilsTestModule Utils
+Utils OOMTestForAudioRouterCreation
+delete Utils
+[Endtest]
+
+[Test]
+title 2.4 Create Routable Audio
+create UtilsTestModule Utils
+Utils CreateAudioRouterL
+Utils CreateRoutableAudioL
+// Notice that following will delete also Audio Router
+Utils DestroyRoutableAudio
+delete Utils
+[Endtest]
+
+[Test]
+title 2.5 OOM for creation of Routable Audio
+create UtilsTestModule Utils
+Utils CreateAudioRouterL
+Utils OOMTestForRoutableAudioCreation
+// Notice that following will delete also Audio Router
+Utils DestroyRoutableAudio
+delete Utils
+[Endtest]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/conf/atsconf.txt	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,34 @@
+;Run \vado\videoplayer\tsrc\testing\tools\genATSdrop.pl from 
+;the tsrc folder to create ATS3 drop.
+[DROP]
+NAME Radio - engine - utils
+DEVICE Vasco
+LONGREBOOT
+FLASH W:\output\release_flash_images\vasco\rnd\core\RM-596_2010.22_79.01.2010.22_rnd.core.fpsx
+FLASH W:\output\release_flash_images\vasco\rnd\langpack\langpack_01\RM-596_2010.22_01.01_Euro_1_79.01.2010.22_rnd.rofs2.fpsx
+FLASH W:\output\release_flash_images\vasco\rnd\customer\custvariant_01_tools\RM-596_2010.22_01.01_tools_79.01.2010.22_rnd.rofs3.fpsx
+FLASH W:\output\release_flash_images\vasco\rnd\uda\RM-596_2010.22_79.01.2010.22_rnd.udaerase.fpsx
+PKG group\UtilsTestModule.pkg
+BOOT
+INI init\TestFramework.ini 600
+EMAIL jouni.vallo@nokia.com
+RUN
+[ENDDROP]
+
+;
+; ats3tools synergyyn vai verkkolevylle ja manuaalisesti kopioida sieltä?
+; 
+; TODO
+; oikeuksien haku Tampereen ATS3
+; imagen luonti, imaker vasco_ui default
+; Testframework.ini täytyy olla init hakemistossa
+; cenrep täytyy HW:sta, .cre tiedosto ja lisätä custom/prerun_custom.xml tiedostoon 
+; 
+; STEPIT:
+; säädä conf/atsconf.txt asetukset kohdalleen
+; komentorivillä tsrc hakemistoon ja aja:
+; perl \ats3tools\genATSdrop.pl -f conf\atsconf.txt -u käyttäjä -p salasana
+; 
+;
+;
+;
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/custom/postrun_custom.xml	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,32 @@
+<step name="Fetch Test module Report" harness="STIF" enabled="true" passrate="100" significant="false">
+       <command>fetch-log</command>
+       <params>
+	    <param type="text"/>
+	    <param delete="true"/>
+	    <param path="C:\Logs\TestFramework\*"/>
+       </params>
+</step>
+<step name="Fetch TestScripter logs" harness="STIF" enabled="true" passrate="100" significant="false">
+       <command>fetch-log</command>
+       <params>
+	    <param type="text"/>
+	    <param delete="true"/>
+	    <param path="C:\Logs\TestFramework\TestScripter\*"/>
+       </params>
+</step>
+<step name="Fetch Testengine logs" harness="STIF" enabled="true" passrate="100" significant="false">
+       <command>fetch-log</command>
+       <params>
+	    <param type="text"/>
+	    <param delete="true"/>
+	    <param path="C:\Logs\TestFramework\Testengine\*"/>
+       </params>
+</step>
+<step name="Fetch Testserver logs" harness="STIF" enabled="true" passrate="100" significant="false">
+       <command>fetch-log</command>
+       <params>
+	    <param type="text"/>
+	    <param delete="true"/>
+	    <param path="C:\Logs\TestFramework\Testserver\*"/>
+       </params>
+</step>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/custom/prerun_custom.xml	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,34 @@
+<step name="Create log directory for testmodule" harness="STIF" enabled="true" passrate="100" significant="false">
+    	<command>makedir</command>
+    	<params>
+        <param dir="c:\logs\testframework"/>
+    	</params>
+</step>
+<step name="Create directory for TestScripter logs" harness="STIF" enabled="true" passrate="100" significant="false">
+    	<command>makedir</command>
+    	<params>
+        <param dir="c:\logs\testframework\TestScripter"/>
+    	</params>
+</step>
+<step name="Create directory for Testengine logs" harness="STIF" enabled="true" passrate="100" significant="false">
+    	<command>makedir</command>
+    	<params>
+        <param dir="c:\logs\testframework\Testengine"/>
+    	</params>
+</step>
+<step name="Create directory for Testserver logs" harness="STIF" enabled="true" passrate="100" significant="false">
+    	<command>makedir</command>
+    	<params>
+        <param dir="c:\logs\testframework\Testserver"/>
+    	</params>
+</step>
+<!---
+<step name="Install IAP file" harness="STIF" enabled="true" passrate="100" significant="false">
+       <command>install</command>
+       <reboot target-alias="*" when="after" />
+       <params>
+       <param src="cccccc00.cre"/>
+       <param dst="c:\private\10202be9\persists\cccccc00.cre"/>
+       </params>
+</step>
+-->
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/eabi/UtilsTestModuleu.def	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,3 @@
+EXPORTS
+	_Z9LibEntryLR13CTestModuleIf @ 1 NONAME
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/group/RestoreOrigCenrep.cmd	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,22 @@
+@REM
+@REM Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+@REM This component and the accompanying materials are made available
+@REM under the terms of "Eclipse Public License v1.0"
+@REM which accompanies this distribution, and is available
+@REM at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@REM
+@REM Initial Contributors:
+@REM Nokia Corporation - initial contribution.
+@REM
+@REM Contributors:
+@REM
+@REM Description:  Wins Command file for Utils Test Module
+@REM
+@REM
+@echo Original environment restoration by UtilsTestModule...
+del \epoc32\winscw\c\TestFramework\UtilsTestModule.cfg
+del \epoc32\wins\c\TestFramework\TestFramework.ini
+del \epoc32\winscw\c\TestFramework\TestFramework.ini
+del \epoc32\data\z\system\data\TestFramework.ini
+@echo Original environment restoration by UtilsTestModule... Finished.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/group/TestEnvInit.cmd	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,24 @@
+@REM
+@REM Copyright (c) 2002-2004 Nokia Corporation and/or its subsidiary(-ies).
+@REM All rights reserved.
+@REM This component and the accompanying materials are made available
+@REM under the terms of "Eclipse Public License v1.0"
+@REM which accompanies this distribution, and is available
+@REM at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@REM
+@REM Initial Contributors:
+@REM Nokia Corporation - initial contribution.
+@REM
+@REM Contributors:
+@REM
+@REM Description:  Wins Command file for Utils Test Module
+@REM
+@REM
+@echo Initializing test environment for utilstestmodule...
+copy ..\conf\UtilsTestModule.cfg \epoc32\wins\c\TestFramework\UtilsTestModule.cfg
+copy ..\conf\UtilsTestModule.cfg \epoc32\winscw\c\TestFramework\UtilsTestModule.cfg
+copy ..\conf\UtilsTestModule.cfg \epoc32\data\z\system\data\UtilsTestModule.cfg
+copy ..\init\TestFramework.ini \epoc32\wins\c\TestFramework\TestFramework.ini
+copy ..\init\TestFramework.ini \epoc32\winscw\c\TestFramework\TestFramework.ini
+copy ..\init\TestFramework.ini \epoc32\data\z\system\data\TestFramework.ini
+@echo Test environment initialization for UtilsTestModule... Finished.
\ No newline at end of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/group/UtilsTestModule.mmp	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,85 @@
+/*TYPE TESTCLASS*/
+/*
+* 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: MMP file for STIF Test Framework's TestScripter 
+* testclass test module.
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET          UtilsTestModule.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101FB3E3
+
+CAPABILITY      ALL -TCB
+/* Remove comments and replace 0x00000000 with correct vendor id */
+// VENDORID     0x00000000
+/* Remove comments and replace 0x00000000 with correct secure id */
+// SECUREID     0x00000000
+
+//TARGETPATH      ?target_path
+DEFFILE         UtilsTestModule.def
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../api
+USERINCLUDE     ../../stub/inc
+USERINCLUDE     /sf/mw/mmmw/mmserv/radioutility/inc
+USERINCLUDE     /sf/mw/mmmw/mmserv/inc
+USERINCLUDE     /sf/mw/mmmw/inc
+
+APP_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH      ../src
+SOURCE          UtilsTestModule.cpp
+SOURCE          UtilsTestModuleBlocks.cpp
+
+//RESOURCE        resource_file
+//RESOURCE        resource_file2
+
+LIBRARY         bafl.lib
+LIBRARY         euser.lib
+LIBRARY         efsrv.lib
+LIBRARY         stiftestinterface.lib
+LIBRARY         stiftestengine.lib
+LIBRARY         centralrepository.lib
+LIBRARY         fmradioengineutils_stub.lib
+
+LANG            SC
+SMPSAFE
+
+/*
+START WINS      
+?wins_specific_information
+END
+
+START MARM
+?marm_specific_information
+END
+*/
+// Other possible keywords:
+ 
+// DOCUMENT     ?file, that is not compiled, but added to MSVC project workspace (i.e. release notes)
+/*
+START BITMAP ?target
+TARGETPATH   ?emulated_path_on_target_machine
+HEADER
+SOURCE       ?color_depth ?source_bitmap
+END
+*/
+// DEFFILE ?filename
+// AIF ?filename
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/group/UtilsTestModule.pkg	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,62 @@
+;
+; 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:
+;
+; 	Installation file for STIF
+;
+
+; Languages
+&EN
+
+; Provide value for uid
+#{"STIF"},(0x00000000),1,1,0,TYPE=SA
+
+; Series60 product id for S60 3.0
+[0x101F7961], 0, 0, 0, {"Series60ProductID"}
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Logo
+; None
+
+; Package signature - Optional
+; None
+
+; Start of Package body
+
+; Condition blocks
+; None
+
+; Options list
+; None
+
+; Install files
+"\epoc32\release\armv5\udeb\UtilsTestModule.dll"   -   "!:\Sys\Bin\UtilsTestModule.dll"
+"conf\UtilsTestModule.cfg"   -   "c:\testframework\UtilsTestModule.cfg"
+
+  
+; Embedded SIS 
+; None
+
+; End of Package body
+
+; PKG dependencies
+; None
+
+; PKG capabilities
+; None
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/group/UtilsTestModule_DoxyFile.txt	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,239 @@
+#
+# 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:
+#
+#
+
+# Doxyfile 1.4.1
+
+#---------------------------------------------------------------------------
+# Project related configuration options
+#---------------------------------------------------------------------------
+PROJECT_NAME           = UtilsTestModule
+PROJECT_NUMBER         = 
+OUTPUT_DIRECTORY       = C:\Symbian\Carbide\workspace\UtilsTestModule\
+CREATE_SUBDIRS         = NO
+OUTPUT_LANGUAGE        = English
+USE_WINDOWS_ENCODING   = YES
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ABBREVIATE_BRIEF       = 
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+STRIP_FROM_INC_PATH    = 
+SHORT_NAMES            = NO
+JAVADOC_AUTOBRIEF      = NO
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 8
+ALIASES                = 
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+SUBGROUPING            = YES
+#---------------------------------------------------------------------------
+# Build related configuration options
+#---------------------------------------------------------------------------
+EXTRACT_ALL            = YES
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = NO
+EXTRACT_LOCAL_METHODS  = NO
+HIDE_UNDOC_MEMBERS     = NO
+HIDE_UNDOC_CLASSES     = NO
+HIDE_FRIEND_COMPOUNDS  = NO
+HIDE_IN_BODY_DOCS      = NO
+INTERNAL_DOCS          = YES
+CASE_SENSE_NAMES       = YES
+HIDE_SCOPE_NAMES       = NO
+SHOW_INCLUDE_FILES     = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+SORT_BRIEF_DOCS        = NO
+SORT_BY_SCOPE_NAME     = NO
+GENERATE_TODOLIST      = NO
+GENERATE_TESTLIST      = NO
+GENERATE_BUGLIST       = NO
+GENERATE_DEPRECATEDLIST= YES
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+SHOW_USED_FILES        = YES
+SHOW_DIRECTORIES       = YES
+FILE_VERSION_FILTER    = 
+#---------------------------------------------------------------------------
+# configuration options related to warning and progress messages
+#---------------------------------------------------------------------------
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_IF_DOC_ERROR      = YES
+WARN_NO_PARAMDOC       = NO
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+#---------------------------------------------------------------------------
+# configuration options related to the input files
+#---------------------------------------------------------------------------
+INPUT                  = C:\Symbian\Carbide\workspace\UtilsTestModule\
+FILE_PATTERNS          = *.h \
+                         *.rh \
+                         *.hrh
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+IMAGE_PATH             = 
+INPUT_FILTER           = 
+FILTER_PATTERNS        = 
+FILTER_SOURCE_FILES    = NO
+#---------------------------------------------------------------------------
+# configuration options related to source browsing
+#---------------------------------------------------------------------------
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+STRIP_CODE_COMMENTS    = YES
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+VERBATIM_HEADERS       = YES
+#---------------------------------------------------------------------------
+# configuration options related to the alphabetical class index
+#---------------------------------------------------------------------------
+ALPHABETICAL_INDEX     = NO
+COLS_IN_ALPHA_INDEX    = 5
+IGNORE_PREFIX          = 
+#---------------------------------------------------------------------------
+# configuration options related to the HTML output
+#---------------------------------------------------------------------------
+GENERATE_HTML          = NO
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = 
+HTML_FOOTER            = 
+HTML_STYLESHEET        = 
+HTML_ALIGN_MEMBERS     = YES
+GENERATE_HTMLHELP      = YES
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = YES
+TOC_EXPAND             = YES
+DISABLE_INDEX          = YES
+ENUM_VALUES_PER_LINE   = 4
+GENERATE_TREEVIEW      = YES
+TREEVIEW_WIDTH         = 250
+#---------------------------------------------------------------------------
+# configuration options related to the LaTeX output
+#---------------------------------------------------------------------------
+GENERATE_LATEX         = NO
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = NO
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+LATEX_HIDE_INDICES     = NO
+#---------------------------------------------------------------------------
+# configuration options related to the RTF output
+#---------------------------------------------------------------------------
+GENERATE_RTF           = YES
+RTF_OUTPUT             = Doc
+COMPACT_RTF            = YES
+RTF_HYPERLINKS         = YES
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+#---------------------------------------------------------------------------
+# configuration options related to the man page output
+#---------------------------------------------------------------------------
+GENERATE_MAN           = NO
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = NO
+#---------------------------------------------------------------------------
+# configuration options related to the XML output
+#---------------------------------------------------------------------------
+GENERATE_XML           = NO
+XML_OUTPUT             = xml
+XML_SCHEMA             = 
+XML_DTD                = 
+XML_PROGRAMLISTING     = YES
+#---------------------------------------------------------------------------
+# configuration options for the AutoGen Definitions output
+#---------------------------------------------------------------------------
+GENERATE_AUTOGEN_DEF   = NO
+#---------------------------------------------------------------------------
+# configuration options related to the Perl module output
+#---------------------------------------------------------------------------
+GENERATE_PERLMOD       = NO
+PERLMOD_LATEX          = NO
+PERLMOD_PRETTY         = YES
+PERLMOD_MAKEVAR_PREFIX = 
+#---------------------------------------------------------------------------
+# Configuration options related to the preprocessor   
+#---------------------------------------------------------------------------
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = YES
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = YES
+INCLUDE_PATH           = 
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = NONSHARABLE_CLASS
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to external references   
+#---------------------------------------------------------------------------
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+#---------------------------------------------------------------------------
+# Configuration options related to the dot tool   
+#---------------------------------------------------------------------------
+CLASS_DIAGRAMS         = YES
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = YES
+COLLABORATION_GRAPH    = YES
+GROUP_GRAPHS           = YES
+UML_LOOK               = NO
+TEMPLATE_RELATIONS     = YES
+INCLUDE_GRAPH          = YES
+INCLUDED_BY_GRAPH      = YES
+CALL_GRAPH             = NO
+GRAPHICAL_HIERARCHY    = YES
+DIRECTORY_GRAPH        = YES
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 1024
+MAX_DOT_GRAPH_HEIGHT   = 1024
+MAX_DOT_GRAPH_DEPTH    = 0
+DOT_TRANSPARENT        = NO
+DOT_MULTI_TARGETS      = NO
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+#---------------------------------------------------------------------------
+# Configuration::additions related to the search engine   
+#---------------------------------------------------------------------------
+SEARCHENGINE           = NO
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/group/UtilsTestModule_nrm.mmp	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,85 @@
+/*TYPE TESTCLASS*/
+/*
+* 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: MMP file for STIF Test Framework's TestScripter 
+* testclass test module.
+*
+*/
+
+#include <platform_paths.hrh>
+
+TARGET          UtilsTestModule.dll
+TARGETTYPE      dll
+UID             0x1000008D 0x101FB3E3
+
+CAPABILITY      ALL -TCB
+/* Remove comments and replace 0x00000000 with correct vendor id */
+// VENDORID     0x00000000
+/* Remove comments and replace 0x00000000 with correct secure id */
+// SECUREID     0x00000000
+
+//TARGETPATH      ?target_path
+DEFFILE         UtilsTestModule.def
+
+USERINCLUDE     ../inc
+USERINCLUDE     ../../inc
+USERINCLUDE     ../../api
+USERINCLUDE     ../../stub/inc
+USERINCLUDE     /sf/mw/mmmw/mmserv/radioutility/inc
+USERINCLUDE     /sf/mw/mmmw/mmserv/inc
+USERINCLUDE     /sf/mw/mmmw/inc
+
+APP_LAYER_SYSTEMINCLUDE
+
+SOURCEPATH      ../src
+SOURCE          UtilsTestModule.cpp
+SOURCE          UtilsTestModuleBlocks.cpp
+
+//RESOURCE        resource_file
+//RESOURCE        resource_file2
+
+LIBRARY         bafl.lib
+LIBRARY         euser.lib
+LIBRARY         efsrv.lib
+LIBRARY         stiftestinterface.lib
+LIBRARY         stiftestengine.lib
+LIBRARY         centralrepository.lib
+LIBRARY         fmradioengineutils_stub.lib
+
+LANG            SC
+SMPSAFE
+
+/*
+START WINS      
+?wins_specific_information
+END
+
+START MARM
+?marm_specific_information
+END
+*/
+// Other possible keywords:
+ 
+// DOCUMENT     ?file, that is not compiled, but added to MSVC project workspace (i.e. release notes)
+/*
+START BITMAP ?target
+TARGETPATH   ?emulated_path_on_target_machine
+HEADER
+SOURCE       ?color_depth ?source_bitmap
+END
+*/
+// DEFFILE ?filename
+// AIF ?filename
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/group/bld.inf	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,63 @@
+/*
+* 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:
+*
+*/
+#include <platform_paths.hrh>
+
+
+PRJ_PLATFORMS
+// specify the platforms your component needs to be built for here
+// defaults to WINS MARM so you can ignore this if you just build these
+	
+	DEFAULT
+
+PRJ_TESTEXPORTS
+// NOTE: If using ARS requirements all export operations should be done under this.
+// 'abld test export'
+
+PRJ_EXPORTS
+// Specify the source file followed by its destination here
+// copy will be used to copy the source file to its destination
+// If there's no destination then the source file will be copied
+// to the same name in /epoc32/include
+// Example: 
+/*
+/agnmodel/inc/AGMCOMON.H
+*/
+../rom/utilstestmodule.iby             CORE_APP_LAYER_IBY_EXPORT_PATH(utilstestmodule.iby)
+
+PRJ_TESTMMPFILES
+
+	UtilsTestModule.mmp
+
+PRJ_MMPFILES
+
+	UtilsTestModule_nrm.mmp
+
+// Specify the .mmp files required for building the important component
+// releasables.
+//
+// Specify "tidy" if the component you need to build doesn't need to be
+// released. Specify "ignore" if the MMP file exists but should be
+// ignored.
+// Example:
+/*
+/agnmodel/group/agnmodel.mmp
+#if defined(MARM)
+/agnmodel/group/agsvexe.mmp
+#endif
+*/
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/inc/UtilsTestModule.h	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,244 @@
+/*
+* 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: STIF testclass declaration
+*
+*/
+
+#ifndef UTILSTESTMODULE_H
+#define UTILSTESTMODULE_H
+
+// System includes
+#include <StifLogger.h>
+#include <TestScripterInternal.h>
+#include <StifTestModule.h>
+#include <TestclassAssert.h>
+#include <centralrepository.h> 
+#include <e32property.h>
+// User includes
+#include "trace.h"
+#include "mradiosystemeventobserver.h"
+#include "mradioaudioroutingobserver.h"
+#include "cradioaudiorouter.h"
+#include "cradioroutableaudio.h"
+
+
+// CONSTANTS
+const TInt KErrBadTestParameter= -1000;         // Error on configuration file
+
+const TInt KErrEventPending =-2000;             // Timeout and not callback 
+const TInt KErrCallbackErrorCode = -2001;       // Callback return error code
+const TInt KErrUnexpectedValue =-2002;          // Unexpected value at setting    
+const TInt KExpectedFrequencyChange = -2003;        // Is not finding more than one station
+const TInt KErrTimeoutController = -2007;       // Unexpected notification
+
+// MACROS
+#define TEST_CLASS_VERSION_MAJOR 1
+#define TEST_CLASS_VERSION_MINOR 1
+#define TEST_CLASS_VERSION_BUILD 1
+// Logging path
+_LIT( KUtilsTestModuleLogPath, "\\logs\\testframework\\UtilsTestModule\\" ); 
+// Log file
+_LIT( KUtilsTestModuleLogFile, "UtilsTestModule.txt" ); 
+_LIT( KUtilsTestModuleLogFileWithTitle, "UtilsTestModule_[%S].txt" );
+
+// FORWARD DECLARATIONS
+class CRadioSystemEventCollector;
+class SRadioStubManager;
+class RChunk;
+
+// CLASS DECLARATION
+
+/**
+*  CUtilsTestModule test class for STIF Test Framework TestScripter.
+*  ?other_description_lines
+*
+*  @lib ?library
+*  @since ?Series60_version
+*/
+NONSHARABLE_CLASS(CUtilsTestModule) : public CScriptBase,
+        public MRadioSystemEventObserver,
+        public MRadioAudioRoutingObserver
+    {
+    public:  // Constructors and destructor
+
+        /**
+        * Two-phased constructor.
+        */
+        static CUtilsTestModule* NewL( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * Destructor.
+        */
+        virtual ~CUtilsTestModule();
+
+    public: // Functions from base classes
+
+        /**
+        * From CScriptBase Runs a script line.
+        * @since ?Series60_version
+        * @param aItem Script line containing method name and parameters
+        * @return Symbian OS error code
+        */
+        virtual TInt RunMethodL( CStifItemParser& aItem );
+
+        // MRadioSystemEventObserver =>
+        
+        /**
+         * Called when system event occurs.
+         * @param aEventType Type of the event
+         */
+        virtual void HandleSystemEventL( TRadioSystemEventType aEventType );
+
+        // <= MRadioSystemEventObserver
+
+        // MRadioAudioRoutingObserver =>
+        
+        /**
+         * Notifies of a requested audio routing change. Changes requested
+         * by other applications do not generate a notification.
+         *
+         * @param aRoute Current audio route
+         */
+        virtual void AudioRouteChangedL( RadioEngine::TRadioAudioRoute aRoute );
+
+        // <= MRadioAudioRoutingObserver
+
+    protected:  // New functions
+
+        /**
+        * ?member_description.
+        * @since ?Series60_version
+        * @param ?arg1 ?description
+        * @return ?description
+        */
+        //?type ?member_function( ?type ?arg1 );
+        // Test case functions
+        TInt CreateSystemEventCollectorL( CStifItemParser& aItem );
+        TInt DestroySystemEventCollector( CStifItemParser& aItem );
+        TInt OOMTestForCreation( CStifItemParser& aItem );
+        TInt OOMTestForAudioRouterCreation( CStifItemParser& aItem );
+        TInt OOMTestForRoutableAudioCreation( CStifItemParser& aItem );
+        
+        TInt IsNetworkCoverage( CStifItemParser& aItem );
+        TInt IsMobileNetworkCoverage( CStifItemParser& aItem );
+        TInt IsCallActive( CStifItemParser& aItem );
+        TInt IsAudioResourcesAvailable( CStifItemParser& aItem );
+        TInt IsHeadsetConnectedL( CStifItemParser& aItem );
+
+        // Tst functions
+        TInt tstSetPropertyValueForHeadset( CStifItemParser& aItem );
+        TInt tstSetPropertyValueForNetworkStatus( CStifItemParser& aItem );
+        TInt tstSetPropertyValueForCallState( CStifItemParser& aItem );
+        TInt tstDefineAndAttachTestProperties ();
+
+        TInt CreateAudioRouterL( CStifItemParser& aItem );
+        TInt DestroyAudioRouter( CStifItemParser& aItem );
+        
+        TInt CreateRoutableAudioL( CStifItemParser& aItem );
+        TInt DestroyRoutableAudio( CStifItemParser& aItem );
+        
+    protected:  // Functions from base classes
+
+        /**
+        * From ?base_class ?member_description
+        */
+        //?type ?member_function();
+
+    private:
+
+        /**
+        * C++ default constructor.
+        */
+        CUtilsTestModule( CTestModuleIf& aTestModuleIf );
+
+        /**
+        * By default Symbian 2nd phase constructor is private.
+        */
+        void ConstructL();
+
+        // Prohibit copy constructor if not deriving from CBase.
+        // ?classname( const ?classname& );
+        // Prohibit assigment operator if not deriving from CBase.
+        // ?classname& operator=( const ?classname& );
+
+        /**
+        * Frees all resources allocated from test methods.
+        * @since ?Series60_version
+        */
+        void Delete();
+
+        /**
+        * Test methods are listed below. 
+        */
+
+        /**
+        * Example test method.
+        * @since ?Series60_version
+        * @param aItem Script line containing parameters.
+        * @return Symbian OS error code.
+        */
+        virtual TInt ExampleL( CStifItemParser& aItem );
+        
+        /**
+         * Method used to log version of test class
+         */
+        void SendTestClassVersion();
+
+        /**
+        * Opens shared nenory used to control stubs.
+        * @since ?Series60_version
+        */
+        TInt InitSharedMemory();
+
+        /**
+        * Creates System Event Collector.
+        * @since ?Series60_version
+        */
+        TInt CreateSystemEventCollector2L();
+
+        /**
+        * Creates Audio Router.
+        * @since ?Series60_version
+        */
+        TInt CreateAudioRouter2L();
+        
+        /**
+        * Creates Routable Audio.
+        * @since ?Series60_version
+        */
+        TInt CreateRoutableAudio2L();
+
+    private:    // Data
+        
+        // RadioStubManager pointer points inside RadioStubManagerChunk
+        SRadioStubManager* iRadioStubManager;
+
+        // RadioStubManagerChunk handle
+        RChunk iRadioStubManagerChunk;
+
+        /** System Event Collector */
+        CRadioSystemEventCollector* iSystemEventCollector;
+        
+        RProperty iPropertyHeadsetStatus;
+        RProperty iPropertyNetworkStatus;
+        RProperty iPropertyCallState;
+        
+        RadioEngine::TRadioAudioRoute iRoute;
+        CRadioAudioRouter* iAudioRouter;
+        CRadioRoutableAudio* iRoutableAudio;
+    };
+
+#endif      // UTILSTESTMODULE_H
+
+// End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/inc/trace.h	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,596 @@
+/*
+* 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:
+* Trace macro definitions.
+*
+*/
+
+#ifndef TRACE_H
+#define TRACE_H
+
+#include <e32base.h> // TCleanupItem
+#include "traceconfiguration.hrh"
+
+#ifdef TRACE_INTO_FILE
+#include <flogger.h> // RFileLogger
+#else
+#include <e32debug.h> // RDebug
+#endif
+
+//-----------------------------------------------------------------------------
+// Constants
+//-----------------------------------------------------------------------------
+//
+
+// NOTE!
+// Replace all COMPONENT_NAME occurnaces with your own component / module name.
+
+/**
+* Prefix trace macro to complete tracing with component name.
+* Returns TDesC which can be used directly with RDebug or RFileLogger.
+*/
+#define _PREFIX_TRACE( aMsg ) TPtrC( (const TText*)L"[Utils_Test]: " L##aMsg )
+
+/**
+* Prefix error trace
+*/
+#define _PREFIX_ERROR( aMsg ) _PREFIX_TRACE( "[ERROR: %d]: " L##aMsg )
+
+/**
+* Prefix info trace.
+*/
+#define _PREFIX_INFO( aMsg ) _PREFIX_TRACE( "[INFO]: " L##aMsg )
+
+/**
+* Prefix macro for strings
+*/
+#define _PREFIX_CHAR( aMsg ) (const char*)"[Utils_Test]: " ##aMsg
+
+/**
+* Define needed directories if TRACE_INTO_FILE macro in use
+*/
+#ifdef TRACE_INTO_FILE
+
+    _LIT( KDir, "utils" );
+    _LIT( KFile, "utils.txt" );
+    _LIT( KFullPath, "c:\\logs\\utils\\" );
+
+#endif
+
+//-----------------------------------------------------------------------------
+// Error trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef ERROR_TRACE
+
+    /**
+    * Error trace definitions.
+    */
+    #ifdef TRACE_INTO_FILE
+
+        #define ERROR( aErr, aMsg )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr );\
+                }\
+            }
+        #define ERROR_1( aErr, aMsg, aP1 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1 );\
+                }\
+            }
+        #define ERROR_2( aErr, aMsg, aP1, aP2 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2 );\
+                }\
+            }
+        #define ERROR_3( aErr, aMsg, aP1, aP2, aP3 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3 );\
+                }\
+            }
+        #define ERROR_4( aErr, aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4 );\
+                }\
+            }
+        #define ERROR_5( aErr, aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5 );\
+                }\
+            }
+        #define ERROR_6( aErr, aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5 );\
+                }\
+            }
+            
+    #else//TRACE_INTO_FILE not defined
+    
+        #define ERROR( aErr, aMsg )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr );\
+                }\
+            }
+        #define ERROR_1( aErr, aMsg, aP1 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1 );\
+                }\
+            }
+        #define ERROR_2( aErr, aMsg, aP1, aP2 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2 );\
+                }\
+            }
+        #define ERROR_3( aErr, aMsg, aP1, aP2, aP3 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3 );\
+                }\
+            }
+        #define ERROR_4( aErr, aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4 );\
+                }\
+            }
+        #define ERROR_5( aErr, aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5 );\
+                }\
+            }
+        #define ERROR_6( aErr, aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            if( aErr < KErrNone )\
+                {\
+                RDebug::Print( _PREFIX_ERROR( aMsg ), aErr, aP1, aP2, aP3, aP4, aP5, aP6 );\
+                }\
+            }
+    
+    #endif//TRACE_INTO_FILE
+
+    #define ERROR_GEN( aMsg ) ERROR( KErrGeneral, aMsg )
+    #define ERROR_GEN_1( aMsg, aP1 ) ERROR_1( KErrGeneral, aMsg, aP1 )
+    #define ERROR_GEN_2( aMsg, aP1, aP2 ) ERROR_2( KErrGeneral, aMsg, aP1, aP2 )
+    #define ERROR_GEN_3( aMsg, aP1, aP2, aP3 ) ERROR_3( KErrGeneral, aMsg, aP1, aP3 )
+    #define ERROR_GEN_4( aMsg, aP1, aP2, aP3, aP4 ) ERROR_4( KErrGeneral, aMsg, aP1, aP3, aP4 )
+    #define ERROR_GEN_5( aMsg, aP1, aP2, aP3, aP4, aP5 ) ERROR_5( KErrGeneral, aMsg, aP1, aP3, aP4, aP5 )
+    #define ERROR_GEN_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 ) ERROR_6( KErrGeneral, aMsg, aP1, aP3, aP4, aP5, aP6 )
+
+#else//ERROR_TRACE not defined
+
+    #define ERROR( aErr, aMsg )
+    #define ERROR_1( aErr, aMsg, aP1 )
+    #define ERROR_2( aErr, aMsg, aP1, aP2 )
+    #define ERROR_3( aErr, aMsg, aP1, aP2, aP3 )
+    #define ERROR_4( aErr, aMsg, aP1, aP2, aP3, aP4 )
+    #define ERROR_5( aErr, aMsg, aP1, aP2, aP3, aP4, aP5 )
+    #define ERROR_6( aErr, aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )
+
+    #define ERROR_GEN( aMsg )
+    #define ERROR_GEN_1( aMsg, aP1 )
+    #define ERROR_GEN_2( aMsg, aP1, aP2 )
+    #define ERROR_GEN_3( aMsg, aP1, aP2, aP3 )
+    #define ERROR_GEN_4( aMsg, aP1, aP2, aP3, aP4 )
+    #define ERROR_GEN_5( aMsg, aP1, aP2, aP3, aP4, aP5 )
+    #define ERROR_GEN_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )
+
+#endif//ERROR_TRACE
+
+//-----------------------------------------------------------------------------
+// TRAP and trace with error macro
+//-----------------------------------------------------------------------------
+//
+#define TRAP_ERROR( aErr, aFunction )\
+    {\
+    TRAP( aErr, aFunction );\
+    TPtrC8 file( ( TText8* )__FILE__ );\
+    ERROR_2( aErr, "Trapped leave in '%S' line %d", &file, __LINE__);\
+    }
+
+//-----------------------------------------------------------------------------
+// Info trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef INFO_TRACE
+
+    /**
+    * Info log message definitions.
+    */
+    #ifdef TRACE_INTO_FILE
+    
+        #define INFO( aMsg )\
+            {\
+            RFileLogger::Write( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ) );\
+            }
+        #define INFO_1( aMsg, aP1 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1 );\
+            }
+        #define INFO_2( aMsg, aP1, aP2 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2 );\
+            }
+        #define INFO_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3 );\
+            }
+        #define INFO_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4 );\
+            }
+        #define INFO_5( aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5 );\
+            }
+        #define INFO_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5, aP6 );\
+            }
+
+    #else//TRACE_INTO_FILE not defined
+
+        #define INFO( aMsg )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ) );\
+            }
+        #define INFO_1( aMsg, aP1 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1 );\
+            }
+        #define INFO_2( aMsg, aP1, aP2 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2 );\
+            }
+        #define INFO_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3 );\
+            }
+        #define INFO_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4 );\
+            }
+        #define INFO_5( aMsg, aP1, aP2, aP3, aP4, aP5 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5 );\
+            }
+        #define INFO_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )\
+            {\
+            RDebug::Print( _PREFIX_INFO( aMsg ), aP1, aP2, aP3, aP4, aP5, aP6 );\
+            }
+
+    #endif//TRACE_INTO_FILE
+        
+#else//INFO_TRACE not defined
+
+    #define INFO( aMsg )
+    #define INFO_1( aMsg, aP1 )
+    #define INFO_2( aMsg, aP1, aP2 )
+    #define INFO_3( aMsg, aP1, aP2, aP3 )
+    #define INFO_4( aMsg, aP1, aP2, aP3, aP4 )
+    #define INFO_5( aMsg, aP1, aP2, aP3, aP4, aP5 )
+    #define INFO_6( aMsg, aP1, aP2, aP3, aP4, aP5, aP6 )
+
+#endif//INFO_TRACE
+
+//-----------------------------------------------------------------------------
+// Trace current client thread name and process id
+//-----------------------------------------------------------------------------
+//
+#ifdef CLIENT_TRACE
+
+    #define CLIENT_PROCESS\
+        {\
+        CLIENT_PROCESS_PREFIX( "" );\
+        }        
+
+    #define CLIENT_PROCESS_PREFIX( aPrefix )\
+        {\
+        RProcess process;\
+        TPtrC name( process.Name() );\
+        TSecureId sid( process.SecureId() );\
+        TPtrC prefix( _S( aPrefix ) );\
+        if( prefix.Length() )\
+            {\
+            INFO_3( "%S: CLIENT - Name: [%S], Sid: [0x%x]", &prefix, &name, sid.iId );\
+            }\
+        else\
+            {\
+            INFO_2( "CLIENT - Name: [%S], Sid: [0x%x]", &name, sid.iId );\
+            }\
+        process.Close();\
+        }        
+
+    #define CLIENT_MESSAGE( aMsg )\
+        {\
+        CLIENT_MESSAGE_PREFIX( "", aMsg );\
+        }
+
+    #define CLIENT_MESSAGE_PREFIX( aPrefix, aMsg )\
+        {\
+        RThread thread;\
+        TInt err = aMsg.Client( thread );\
+        if( err == KErrNone )\
+            {\
+            RProcess process;\
+            err = thread.Process( process );\
+            if( err == KErrNone )\
+                {\
+                TPtrC threadName( thread.Name() );\
+                TUid processUid( process.SecureId() );\
+                TPtrC prefix( _S( aPrefix ) );\
+                if( prefix.Length() )\
+                    {\
+                    INFO_4( "%S: MSG - Name: [%S], Sid: [0x%x], Message ID: [%d]",\
+                        &prefix,\
+                        &threadName,\
+                        processUid,\
+                        aMsg.Function() );\
+                    }\
+                else\
+                    {\
+                    INFO_3( "MSG - Name: [%S], Sid: [0x%x], Message ID: [%d]",\
+                        &threadName,\
+                        processUid,\
+                        aMsg.Function() );\
+                    }\
+                }\
+            process.Close();\
+            }\
+        thread.Close();\
+        }
+
+#else
+
+    #define CLIENT_PROCESS
+    #define CLIENT_PROCESS_PREFIX( aPrefix )
+    #define CLIENT_MESSAGE( aMsg )
+    #define CLIENT_MESSAGE_PREFIX( aPrefix, aMsg )
+
+#endif
+
+//-----------------------------------------------------------------------------
+// Function trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef FUNC_TRACE
+
+    /**
+    * Function logging definitions.
+    */
+    #ifdef TRACE_INTO_FILE
+    
+        #define FUNC( aMsg, aP1 )\
+            {\
+            TPtrC8 trace( _S8( aMsg ) );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, trace, aP1 );\
+            }\
+    
+    #else//TRACE_INTO_FILE not defined
+    
+        #define FUNC( aMsg, aP1 )\
+            {\
+            RDebug::Printf( aMsg, aP1 );\
+            }\
+    
+    #endif//TRACE_INTO_FILE
+        
+    /**
+    * Function trace helper class.
+    * 
+    * NOTE:
+    * LC -methods cannot be trapped. Therefore if LC -method leaves
+    * END trace is used instead of LEAVE trace.
+    * If you have an idea how to round this problem please tell.
+    */
+    _LIT8( KFuncNameTerminator, "(" );
+    _LIT8( KFuncLeavePatternL, "L" );
+    class TFuncLog
+        {
+        public:
+            static void Cleanup( TAny* aPtr )
+                {
+                TFuncLog* self = static_cast< TFuncLog* >( aPtr );
+                self->iLeft = ETrue;
+                FUNC( _PREFIX_CHAR("%S-LEAVE"), &self->iFunc ); // Leave detected
+                }
+            inline TFuncLog( const char* aFunc ) :
+                    iFunc( aFunc ? _S8( aFunc ) : _S8("") ),
+                    iLeft( EFalse ),
+                    iCleanupItem( Cleanup, this ),
+                    iCanLeave( EFalse )
+                {
+                TInt pos( iFunc.Find( KFuncNameTerminator ) );
+                if( pos != KErrNotFound )
+                    {
+                    iFunc.Set( iFunc.Left( pos ) );
+                    iCanLeave = !iFunc.Right( KFuncLeavePatternL().Length() ).Compare( KFuncLeavePatternL );
+                    if ( iCanLeave )
+                        {
+                        CleanupStack::PushL( iCleanupItem ); // Ignore warnings
+                        }
+                    }
+                FUNC( _PREFIX_CHAR("%S-START"), &iFunc );
+                }
+
+            inline ~TFuncLog()
+                {
+                if ( !iLeft )
+                    {
+                    if ( iCanLeave )
+                        {
+                        CleanupStack::Pop( this ); // Pop the cleanup item
+                        }
+                    FUNC( _PREFIX_CHAR("%S-END"), &iFunc ); // Normally finished
+                    }
+                }
+
+        private: // Data
+            TPtrC8 iFunc;
+            TBool iLeft;
+            TCleanupItem iCleanupItem;
+            TBool iCanLeave;
+        };
+    #define FUNC_LOG TFuncLog _fl( __PRETTY_FUNCTION__ );
+    
+#else//FUNC_TRACE not defined
+
+    #define FUNC_LOG
+
+#endif//FUNC_TRACE
+
+//-----------------------------------------------------------------------------
+// Timestamp trace macros
+//-----------------------------------------------------------------------------
+//
+#ifdef TIMESTAMP_TRACE
+
+    #ifdef TRACE_INTO_FILE
+    
+        #define TIMESTAMP( aCaption )\
+            {\
+            TTime t;\
+            t.HomeTime();\
+            TDateTime dt = t.DateTime();\
+            _LIT( KCaption, aCaption );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend,\
+                _PREFIX_TRACE("[TIMESTAMP] %S %d:%02d:%02d.%d us"),\
+                    &KCaption, dt.Hour(), dt.Minute(), dt.Second(), dt.MicroSecond() );\
+            }
+
+    #else//TRACE_INTO_FILE not defined
+    
+        #define TIMESTAMP( aCaption )\
+            {\
+            TTime t;\
+            t.HomeTime();\
+            TDateTime dt = t.DateTime();\
+            _LIT( KCaption, aCaption );\
+            RDebug::Print( _PREFIX_TRACE("[TIMESTAMP] %S %d:%02d:%02d.%d us"),\
+                &KCaption, dt.Hour(), dt.Minute(), dt.Second(), dt.MicroSecond() );\
+            }
+
+    #endif//TRACE_INTO_FILE
+
+#else//TIMESTAMP_TRACE not defined
+
+    #define TIMESTAMP( aCaption )
+
+#endif//TIMESTAMP_TRACE
+
+#ifdef HEAP_TRACE
+
+    #ifdef TRACE_INTO_FILE
+
+        #define HEAP( aMsg )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace );\
+            }
+        #define HEAP_1( aMsg, aP1 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1 );\
+            }
+        #define HEAP_2( aMsg, aP1, aP2 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2 );\
+            }
+        #define HEAP_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3 );\
+            }
+        #define HEAP_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RFileLogger::WriteFormat( KDir, KFile, EFileLoggingModeAppend, _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3, aP4 );\
+            }
+
+    #else//TRACE_INTO_FILE not defined
+
+        #define HEAP( aMsg )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace );\
+            }
+        #define HEAP_1( aMsg, aP1 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1 );\
+            }
+        #define HEAP_2( aMsg, aP1, aP2 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2 );\
+            }
+        #define HEAP_3( aMsg, aP1, aP2, aP3 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3 );\
+            }
+        #define HEAP_4( aMsg, aP1, aP2, aP3, aP4 )\
+            {\
+            TInt totalAllocSpace = 0;\
+            User::AllocSize( totalAllocSpace );\
+            RDebug::Print( _PREFIX_HEAP( aMsg ), totalAllocSpace, aP1, aP2, aP3, aP4 );\
+            }
+
+    #endif//TRACE_INTO_FILE
+
+#else//HEAP_TRACE not defined
+
+    #define HEAP( aMsg )
+    #define HEAP_1( aMsg, aP1 )
+    #define HEAP_2( aMsg, aP1, aP2 )
+    #define HEAP_3( aMsg, aP1, aP2, aP3 )
+    #define HEAP_4( aMsg, aP1, aP2, aP3, aP4 )
+
+#endif//HEAP_TRACE
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/inc/traceconfiguration.hrh	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,78 @@
+/*
+* 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:
+* Trace Macro Configurations.
+*
+*/
+
+#ifndef TRACECONFIGURATION_HRH
+#define TRACECONFIGURATION_HRH
+
+//-----------------------------------------------------------------------------
+// Trace definitions
+//-----------------------------------------------------------------------------
+//
+
+/**
+* Error trace enabled
+*/
+#ifdef _DEBUG
+    #define ERROR_TRACE
+#else
+    #undef ERROR_TRACE
+#endif
+
+/**
+* Info trace enabled
+*/
+#ifdef _DEBUG
+    #define INFO_TRACE
+#else
+    #undef INFO_TRACE
+#endif
+
+/**
+* Timestamp tracing on
+*/
+#ifdef _DEBUG
+    #define TIMESTAMP_TRACE
+#else
+    #undef TIMESTAMP_TRACE
+#endif
+
+/**
+* Tracing current client process and thread
+*/
+#ifdef _DEBUG
+    #define CLIENT_TRACE
+#else
+    #undef CLIENT_TRACE
+#endif
+
+/**
+* Function trace enabled
+*/
+#ifdef _DEBUG
+    #define FUNC_TRACE
+#else
+    #undef FUNC_TRACE
+#endif
+
+/**
+* Tracing into file enabled, default RDebug
+*/
+#undef TRACE_INTO_FILE
+
+#endif
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/init/TestFramework.ini	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,200 @@
+#
+# 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.
+#
+#
+# This is STIFTestFramework initialization file
+# Comment lines start with '#'-character.
+# See STIF TestFramework users guide.doc for instructions
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set following test engine settings:
+#	- Set Test Reporting mode. TestReportMode's possible values are:
+#		+ 'Summary': Summary of the tested test cases.
+#		+ 'Environment': Hardware and software info.
+#		+ 'TestCases': Test case report.
+#		+ 'FullReport': Set of all above ones.
+#		+ Example 'TestReportMode= Summary TestCases'
+#
+# 	- CreateTestReport setting controls report creation mode
+#		+ YES, Test report will created.
+#		+ NO, No Test report.
+#
+# 	- File path indicates the base path of the test report.
+# 	- File name indicates the name of the test report.
+#
+# 	- File format indicates the type of the test report.
+#		+ TXT, Test report file will be txt type, for example 'TestReport.txt'.
+#		+ HTML, Test report will be html type, for example 'TestReport.html'.
+#
+# 	- File output indicates output source of the test report.
+#		+ FILE, Test report logging to file.
+#		+ RDEBUG, Test report logging to using rdebug.
+#
+# 	- File Creation Mode indicates test report overwriting if file exist.
+#		+ OVERWRITE, Overwrites if the Test report file exist.
+#		+ APPEND, Continue logging after the old Test report information if 
+#                 report exist.
+# 	- Sets a device reset module's dll name(Reboot).
+#		+ If Nokia specific reset module is not available or it is not correct one
+#		  StifHWResetStub module may use as a template for user specific reset
+#		  module. 
+# 	- Sets STIF test measurement disable options. e.g. pluging1 and pluging2 disablation
+#		DisableMeasurement= stifmeasurementplugin01 stifmeasurementplugin02
+#
+
+[Engine_Defaults]
+
+TestReportMode= FullReport		# Possible values are: 'Empty', 'Summary', 'Environment', 'TestCases' or 'FullReport'
+
+CreateTestReport= YES			# Possible values: YES or NO
+
+TestReportFilePath= c:\LOGS\TestFramework\
+TestReportFileName= TestReport
+
+TestReportFormat= TXT			# Possible values: TXT or HTML
+TestReportOutput= FILE			# Possible values: FILE or RDEBUG
+TestReportFileCreationMode= OVERWRITE	# Possible values: OVERWRITE or APPEND
+
+DeviceResetDllName= StifResetForNokia.dll # e.g. 'StifHWResetStub.dll' for user specific reseting
+
+DisableMeasurement= stifmeasurementdisablenone	# Possible values are:
+						# 'stifmeasurementdisablenone', 'stifmeasurementdisableall'
+					  	# 'stifmeasurementplugin01', 'stifmeasurementplugin02',
+					  	# 'stifmeasurementplugin03', 'stifmeasurementplugin04',
+					  	# 'stifmeasurementplugin05' or 'stifbappeaprofiler'
+
+Timeout= 0 
+[End_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Module configurations start
+# Modules are added between module tags
+# tags. Module name is specified after ModuleName= tag, like
+# ModuleName= XXXXXXXXX
+# Modules might have initialisation file, specified as
+# IniFile= c:\testframework\YYYYYY
+# Modules might have several configuration files, like
+# TestCaseFile= c:\testframework\NormalCases.txt
+# TestCaseFile= c:\testframework\SmokeCases.txt
+# TestCaseFile= c:\testframework\ManualCases.txt
+
+# (TestCaseFile is synonym for old term ConfigFile)
+
+# Following case specifies demo module settings. Demo module
+# does not read any settings from file, so tags 
+# IniFile and TestCaseFile are not used.
+# In the simplest case it is enough to specify only the
+# name of the test module when adding new test module
+[New_Module]
+ModuleName= TestScripter
+TestCaseFile= c:\testframework\UtilsTestModule.cfg
+[End_Module]
+
+# Load testmoduleXXX, optionally with initialization file and/or test case files
+#[New_Module]
+#ModuleName= testmodulexxx
+
+#TestModuleXXX used initialization file
+#IniFile= c:\testframework\init.txt
+
+#TestModuleXXX used configuration file(s)
+#TestCaseFile= c:\testframework\testcases1.cfg
+#TestCaseFile= c:\testframework\testcases2.cfg
+#TestCaseFile= c:\testframework\manualtestcases.cfg
+
+#[End_Module]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+
+
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+# Set STIFTestFramework logging overwrite parameters for Logger.
+# 	Hardware and emulator environment logging path and styles can
+# 	be configured from here to overwrite the Logger's implemented values.
+#	
+#	Settings description:
+#	- Indicates option for creation log directory/directories. If log directory/directories
+#         is/are not created by user they will make by software.
+#		+ YES, Create log directory/directories if not allready exist.
+#		+ NO, Log directory/directories not created. Only created one is used.
+#
+#	- Overwrite emulator path setting.
+#		+ Example: If 'EmulatorBasePath= C:\LOGS\TestFramework\' and in code is defined 
+#		           Logger's path 'D:\LOGS\Module\' with those definition the path
+#		           will be 'C:\LOGS\TestFramework\LOGS\Module\'
+#
+#	- Overwrite emulator's logging format.
+#		+ TXT, Log file(s) will be txt type(s), for example 'Module.txt'.
+#		+ HTML, Log file(s) will be html type(s), for example 'Module.html'.
+#
+#	- Overwrited emulator logging output source.
+#		+ FILE, Logging to file(s).
+#		+ RDEBUG, Logging to using rdebug(s).
+#
+#	- Overwrite hardware path setting (Same description as above in emulator path).
+#	- Overwrite hardware's logging format(Same description as above in emulator format).
+#	- Overwrite hardware's logging output source(Same description as above in emulator output).
+#
+#	- File Creation Mode indicates file overwriting if file exist.
+#		+ OVERWRITE, Overwrites if file(s) exist.
+#		+ APPEND, Continue logging after the old logging information if file(s) exist.
+#
+#	- Will thread id include to the log filename.
+#		+ YES, Thread id to log file(s) name, Example filename 'Module_b9.txt'.
+#		+ NO, No thread id to log file(s), Example filename 'Module.txt'.
+#
+#	- Will time stamps include the to log file.
+#		+ YES, Time stamp added to each line in log file(s). Time stamp is 
+#                 for example'12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No time stamp(s).
+#
+#	- Will line breaks include to the log file.
+#		+ YES, Each logging event includes line break and next log event is in own line.
+#		+ NO, No line break(s).
+#
+#	- Will event ranking include to the log file.
+#		+ YES, Event ranking number added to each line in log file(s). Ranking number 
+#                 depends on environment's tics, for example(includes time stamp also)
+#                 '012   12.Nov.2003 115958    LOGGING INFO'
+#		+ NO, No event ranking.
+#
+
+[Logger_Defaults]
+
+#NOTE: If you want to set Logger using next setting(s) remove comment(s)'#' 
+#NOTE: TestEngine and TestServer logging settings cannot change here 
+
+#CreateLogDirectories= YES		# Possible values: YES or NO
+
+#EmulatorBasePath= C:\LOGS\TestFramework\
+#EmulatorFormat= HTML			# Possible values: TXT or HTML
+#EmulatorOutput= FILE			# Possible values: FILE or RDEBUG
+
+#HardwareBasePath= D:\LOGS\TestFramework\
+#HardwareFormat= HTML			# Possible values: TXT or HTML
+#HardwareOutput= FILE			# Possible values: FILE or RDEBUG
+
+#FileCreationMode= OVERWRITE		# Possible values: OVERWRITE or APPEND
+
+#ThreadIdToLogFile= YES			# Possible values: YES or NO
+#WithTimeStamp= YES			# Possible values: YES or NO
+#WithLineBreak= YES			# Possible values: YES or NO
+#WithEventRanking= YES			# Possible values: YES or NO
+
+HardwareOutput= RDEBUG 
+EmulatorOutput= RDEBUG 
+[End_Logger_Defaults]
+# -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
+
+# End of file
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/rom/utilstestmodule.iby	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,29 @@
+/*
+* 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:  IBY file for the UtilsTestModule
+*
+*/
+
+#ifndef __UTILSTESTMODULE_IBY__
+#define __UTILSTESTMODULE_IBY__
+
+// Use standard macros
+#include <data_caging_paths_for_iby.hrh>
+
+
+file=ABI_DIR\BUILD_DIR\utilstestmodule.dll         SHARED_LIB_DIR\utilstestmodule.dll	PAGED
+
+#endif // __UTILSTESTMODULE_IBY__
+
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/src/UtilsTestModule.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,207 @@
+/*
+* 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: This file contains testclass implementation.
+*
+*/
+
+// INCLUDE FILES
+#include <Stiftestinterface.h>
+#include <SettingServerClient.h>
+#include "UtilsTestModule.h"
+#include "trace.h"
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CSettingTestModule::CPresetUtilityTestModule
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CUtilsTestModule::CUtilsTestModule( 
+    CTestModuleIf& aTestModuleIf ):
+        CScriptBase( aTestModuleIf )
+    {
+    FUNC_LOG;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CUtilsTestModule::ConstructL()
+    {
+    FUNC_LOG;
+    
+    //Read logger settings to check whether test case name is to be
+    //appended to log file name.
+    RSettingServer settingServer;
+    TInt ret = settingServer.Connect();
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        }
+    // Struct to StifLogger settigs.
+    TLoggerSettings loggerSettings; 
+    // Parse StifLogger defaults from STIF initialization file.
+    ret = settingServer.GetLoggerSettings(loggerSettings);
+    if(ret != KErrNone)
+        {
+        User::Leave(ret);
+        } 
+    // Close Setting server session
+    settingServer.Close();
+
+    TFileName logFileName;
+    
+    if(loggerSettings.iAddTestCaseTitle)
+        {
+        TName title;
+        TestModuleIf().GetTestCaseTitleL(title);
+        logFileName.Format(KUtilsTestModuleLogFileWithTitle, &title);
+        }
+    else
+        {
+        logFileName.Copy(KUtilsTestModuleLogFile);
+        }
+
+    iLog = CStifLogger::NewL( KUtilsTestModuleLogPath, 
+                          logFileName,
+                          CStifLogger::ETxt,
+                          CStifLogger::EFile,
+                          EFalse );
+    
+    SendTestClassVersion();
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::NewL
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+CUtilsTestModule* CUtilsTestModule::NewL( 
+    CTestModuleIf& aTestModuleIf )
+    {
+    FUNC_LOG;
+    CUtilsTestModule* self = new (ELeave) CUtilsTestModule( aTestModuleIf );
+
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+
+    return self;
+
+    }
+
+// Destructor
+CUtilsTestModule::~CUtilsTestModule()
+    { 
+    FUNC_LOG;
+
+    // Delete resources allocated from test methods
+    Delete();
+
+    // Delete logger
+    delete iLog; 
+
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::SendTestClassVersion
+// Method used to send version of test class
+//-----------------------------------------------------------------------------
+//
+void CUtilsTestModule::SendTestClassVersion()
+	{
+	FUNC_LOG;
+	TVersion moduleVersion;
+	moduleVersion.iMajor = TEST_CLASS_VERSION_MAJOR;
+	moduleVersion.iMinor = TEST_CLASS_VERSION_MINOR;
+	moduleVersion.iBuild = TEST_CLASS_VERSION_BUILD;
+	
+	TFileName moduleName;
+	moduleName = _L("UtilsTestModule.dll");
+
+	TBool newVersionOfMethod = ETrue;
+	TestModuleIf().SendTestModuleVersion(moduleVersion, moduleName, newVersionOfMethod);
+	}
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+
+// -----------------------------------------------------------------------------
+// LibEntryL is a polymorphic Dll entry point.
+// Returns: CScriptBase: New CScriptBase derived object
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CScriptBase* LibEntryL( 
+    CTestModuleIf& aTestModuleIf ) // Backpointer to STIF Test Framework
+    {
+    FUNC_LOG;
+
+    return ( CScriptBase* ) CUtilsTestModule::NewL( aTestModuleIf );
+
+    }
+
+
+//  End of File
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/radioengine/utils/tsrc/src/UtilsTestModuleBlocks.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,902 @@
+/*
+* 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: This file contains testclass implementation.
+*
+*/
+
+// [INCLUDE FILES] - do not remove
+#include <e32svr.h>
+#include <e32cmn.h>
+#include <StifParser.h>
+#include <Stiftestinterface.h>
+#include <data_caging_path_literals.hrh>
+#include <centralrepository.h>
+#include<RadioStubManager.h>
+#include <ctsydomainpskeys.h>
+#include <publicruntimeids.hrh>
+#include <sacls.h>
+
+#include "UtilsTestModule.h"
+#include "cradiosystemeventcollector.h"
+#include "radioengineutils.h"
+
+
+// EXTERNAL DATA STRUCTURES
+//extern  ?external_data;
+
+// EXTERNAL FUNCTION PROTOTYPES  
+//extern ?external_function( ?arg_type,?arg_type );
+
+// CONSTANTS
+//const ?type ?constant_var = ?constant;
+//_LIT( KStifScriptEmptyString, "EMPTYSTRING" );
+//_LIT( KEmptyString, "" );
+_LIT_SECURITY_POLICY_PASS(KRadioServerReadPolicy);
+_LIT_SECURITY_POLICY_C1(KRadioServerWritePolicy, ECapabilityWriteUserData);
+
+// MACROS
+//#define ?macro ?macro_def
+
+// LOCAL CONSTANTS AND MACROS
+//const ?type ?constant_var = ?constant;
+//#define ?macro_name ?macro_def
+
+// MODULE DATA STRUCTURES
+//enum ?declaration
+//typedef ?declaration
+
+// LOCAL FUNCTION PROTOTYPES
+//?type ?function_name( ?arg_type, ?arg_type );
+
+// FORWARD DECLARATIONS
+//class ?FORWARD_CLASSNAME;
+
+// ============================= LOCAL FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// ?function_name ?description.
+// ?description
+// Returns: ?value_1: ?description
+//          ?value_n: ?description_line1
+//                    ?description_line2
+// -----------------------------------------------------------------------------
+//
+/*
+?type ?function_name(
+    ?arg_type arg,  // ?description
+    ?arg_type arg)  // ?description
+    {
+
+    ?code  // ?comment
+
+    // ?comment
+    ?code
+    }
+*/
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CPresetUtilityTestModule::Delete
+// Delete here all resources allocated and opened from test methods. 
+// Called from destructor. 
+// -----------------------------------------------------------------------------
+//
+void CUtilsTestModule::Delete() 
+    {
+    FUNC_LOG;
+
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::RunMethodL
+// Run specified method. Contains also table of test mothods and their names.
+// -----------------------------------------------------------------------------
+//
+TInt CUtilsTestModule::RunMethodL( 
+    CStifItemParser& aItem ) 
+    {
+    FUNC_LOG;
+
+    static TStifFunctionInfo const KFunctions[] =
+        {  
+        // Copy this line for every implemented function.
+        // First string is the function name used in TestScripter script file.
+        // Second is the actual implementation member function. 
+        ENTRY( "Example", CUtilsTestModule::ExampleL ),
+        // [test cases entries] - Do not remove
+        ENTRY( "CreateSystemEventCollectorL", CUtilsTestModule::CreateSystemEventCollectorL ),
+        ENTRY( "DestroySystemEventCollector", CUtilsTestModule::DestroySystemEventCollector ),
+        ENTRY( "IsNetworkCoverage", CUtilsTestModule::IsNetworkCoverage ),
+        ENTRY( "IsMobileNetworkCoverage", CUtilsTestModule::IsMobileNetworkCoverage ),
+        ENTRY( "IsCallActive", CUtilsTestModule::IsCallActive ),
+        ENTRY( "IsAudioResourcesAvailable", CUtilsTestModule::IsAudioResourcesAvailable ),
+        ENTRY( "IsHeadsetConnectedL", CUtilsTestModule::IsHeadsetConnectedL ),
+        ENTRY( "OOMTestForCreation", CUtilsTestModule::OOMTestForCreation ),
+        ENTRY( "tstSetPropertyValueForHeadset", CUtilsTestModule::tstSetPropertyValueForHeadset ),
+        ENTRY( "tstSetPropertyValueForNetworkStatus", CUtilsTestModule::tstSetPropertyValueForNetworkStatus ),
+        ENTRY( "tstSetPropertyValueForCallState", CUtilsTestModule::tstSetPropertyValueForCallState ),
+        ENTRY( "CreateAudioRouterL", CUtilsTestModule::CreateAudioRouterL ),
+        ENTRY( "DestroyAudioRouter", CUtilsTestModule::DestroyAudioRouter ),
+        ENTRY( "OOMTestForAudioRouterCreation", CUtilsTestModule::OOMTestForAudioRouterCreation ),
+        ENTRY( "CreateRoutableAudioL", CUtilsTestModule::CreateRoutableAudioL ),
+        ENTRY( "DestroyRoutableAudio", CUtilsTestModule::DestroyRoutableAudio ),
+        ENTRY( "OOMTestForRoutableAudioCreation", CUtilsTestModule::OOMTestForRoutableAudioCreation )
+        //ADD NEW ENTRY HERE
+
+        };
+
+    const TInt count = sizeof( KFunctions ) / 
+                        sizeof( TStifFunctionInfo );
+
+    return RunInternalL( KFunctions, count, aItem );
+
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::ExampleL
+// Example test method function.
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+TInt CUtilsTestModule::ExampleL( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+
+    // Print to UI
+    _LIT( KSettingsTestModule, "UtilsTestModule" );
+    _LIT( KExample, "In Example" );
+    TestModuleIf().Printf( 0, KSettingsTestModule, KExample );
+    // Print to log file
+    iLog->Log( KExample );
+
+    TInt i = 0;
+    TPtrC string;
+    _LIT( KParam, "Param[%i]: %S" );
+    while ( aItem.GetNextString ( string ) == KErrNone )
+        {
+        TestModuleIf().Printf( i, KSettingsTestModule, 
+                                KParam, i, &string );
+        ++i;
+        }
+
+    return KErrNone;
+
+    }
+
+//-----------------------------------------------------------------------------
+// CPresetUtilityTest::CreateSystemEventCollectorL
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::CreateSystemEventCollectorL(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+
+    TInt err(KErrNone);
+    err = InitSharedMemory();
+    if ( KErrNone == err )
+        {
+        tstDefineAndAttachTestProperties();
+        }
+    if ((!iSystemEventCollector) && (KErrNone == err))
+        {
+        TRAP( err, RadioEngineUtils::InitializeL(); );
+        if (KErrNone != err)
+            {
+            INFO_1( "RadioEngineUtils::InitializeL() failed err = %i", err )
+            iRadioStubManagerChunk.Close();
+            }
+        else
+            {
+            TRAP( err, iSystemEventCollector = CRadioSystemEventCollector::NewL(); );
+            if ( KErrNone == err )
+                {
+                TRAP( err, iSystemEventCollector->AddObserverL( this ); );
+                if ( KErrNone != err )
+                    {
+                    INFO_1( "iSystemEventCollector->AddObserverL() failed err = %i", err )
+                    iRadioStubManagerChunk.Close();
+                    delete iSystemEventCollector;
+                    iSystemEventCollector = NULL;
+                    RadioEngineUtils::Release();
+                    }
+                }
+            else
+                {
+                INFO_1( "CRadioSystemEventCollector::NewL() failed err = %i", err )
+                iRadioStubManagerChunk.Close();
+                RadioEngineUtils::Release();
+                }
+            }
+        }
+    if ( KErrNoMemory == err )
+        {
+        User::Leave( err );
+        }
+    MRadioAudioRoutingObserver* observer(NULL);
+    iSystemEventCollector->AsObserver( observer );
+    if (NULL == observer)
+        {
+        INFO("Null pointer got for MRadioAudioRoutingObserver from MRadioAudioRoutingObserver from iSystemEventCollector->AsObserver.");   
+        }
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::DestroySystemEventCollector
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::DestroySystemEventCollector(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    if (iSystemEventCollector)
+        {
+        iSystemEventCollector->RemoveObserver(this);
+        iRadioStubManagerChunk.Close();
+        delete iSystemEventCollector;
+        iSystemEventCollector = NULL;
+        RadioEngineUtils::Release();
+        iPropertyHeadsetStatus.Delete(KStub_KRadioPSUid, SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected);
+        iPropertyHeadsetStatus.Close();
+        iPropertyNetworkStatus.Delete(KStub_KUidSystemCategory, KUidNetworkStatusValue);
+        iPropertyNetworkStatus.Close();
+        iPropertyCallState.Delete(KStub_KPSUidCtsyCallInformation, KCTsyCallState);
+        iPropertyCallState.Close();
+        }
+    return KErrNone;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::OOMTestForCreation
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::OOMTestForCreation(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    err = InitSharedMemory();
+    if (KErrNone == err)
+        {
+        RadioEngineUtils::InitializeL();
+        TInt i(-1);
+        for (err = KErrNoMemory; KErrNoMemory == err; __UHEAP_MARKEND)
+            {
+            TRAP ( err,
+                        {
+                        ++i;
+                        INFO_1("loop count = %i", i );
+                        __UHEAP_MARK;
+                        __UHEAP_FAILNEXT( i );
+                        TRAP( err, CreateSystemEventCollector2L(); );
+                        if ( iSystemEventCollector )
+                            {
+                            delete iSystemEventCollector;
+                            iSystemEventCollector = NULL;
+                            }
+                        }
+            );
+            }
+        __UHEAP_RESET;
+        RadioEngineUtils::Release();
+        iRadioStubManagerChunk.Close();
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::IsNetworkCoverage()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::IsNetworkCoverage(CStifItemParser& aItem)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TBool expectedNetworkCoverageStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(expectedNetworkCoverageStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: expectedNetworkCoverageStatus.");
+        }
+    TBool networkCoverageStatus(iSystemEventCollector->IsNetworkCoverage());
+    if (expectedNetworkCoverageStatus != networkCoverageStatus)
+        {
+        INFO_2(
+                "Failed: networkCoverageStatus=%i, expectedNetworkCoverageStatus=%i.",
+                networkCoverageStatus, expectedNetworkCoverageStatus);
+        err = KErrUnexpectedValue;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::IsMobileNetworkCoverage()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::IsMobileNetworkCoverage(CStifItemParser& aItem)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TBool expectedMobileNetworkCoverageStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(expectedMobileNetworkCoverageStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: expectedMobileNetworkCoverageStatus.");
+        }
+    TBool mobileNetworkCoverageStatus(
+            iSystemEventCollector->IsMobileNetworkCoverage());
+    if (expectedMobileNetworkCoverageStatus != mobileNetworkCoverageStatus)
+        {
+        INFO_2(
+                "Failed: mobileNetworkCoverageStatus=%i, expectedMobileNetworkCoverageStatus=%i.",
+                mobileNetworkCoverageStatus,
+                expectedMobileNetworkCoverageStatus);
+        err = KErrUnexpectedValue;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::IsCallActive()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::IsCallActive(CStifItemParser& aItem)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TBool expectedCallActiveStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(expectedCallActiveStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: expectedCallActiveStatus.");
+        }
+    TBool callActiveStatus(iSystemEventCollector->IsCallActive());
+    if (expectedCallActiveStatus != callActiveStatus)
+        {
+        INFO_2("Failed: callActiveStatus=%i, expectedCallActiveStatus=%i.",
+                callActiveStatus, expectedCallActiveStatus);
+        err = KErrUnexpectedValue;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::IsAudioResourcesAvailable()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::IsAudioResourcesAvailable(CStifItemParser& aItem)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TBool expectedAudioResourcesAvailableStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(expectedAudioResourcesAvailableStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err,
+                "Missing Parameter: expectedAudioResourcesAvailableStatus.");
+        }
+    TBool audioResourcesAvailableStatus(
+            iSystemEventCollector->IsAudioResourcesAvailable());
+    if (expectedAudioResourcesAvailableStatus
+            != audioResourcesAvailableStatus)
+        {
+        INFO_2(
+                "Failed: audioResourcesAvailableStatus=%i, expectedAudioResourcesAvailableStatus=%i.",
+                audioResourcesAvailableStatus,
+                expectedAudioResourcesAvailableStatus);
+        err = KErrUnexpectedValue;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::IsHeadsetConnectedL()
+// Returns: Errors.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::IsHeadsetConnectedL(CStifItemParser& aItem)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TBool expectedHeadsetConnectedStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(expectedHeadsetConnectedStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: expectedHeadsetConnectedStatus.");
+        }
+    TBool
+            headsetConnectedStatus(
+                    iSystemEventCollector->IsHeadsetConnectedL());
+    if (expectedHeadsetConnectedStatus != headsetConnectedStatus)
+        {
+        INFO_2(
+                "Failed: headsetConnectedStatus=%i, expectedHeadsetConnectedStatus=%i.",
+                headsetConnectedStatus, expectedHeadsetConnectedStatus);
+        err = KErrUnexpectedValue;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::tstSetPropertyValueForHeadset()
+// Returns: System error.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::tstSetPropertyValueForHeadset( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TBool headsetConnectedStatus(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(headsetConnectedStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: headsetConnectedStatus.");
+        }
+    err = iPropertyHeadsetStatus.Set(KStub_KRadioPSUid, SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected, headsetConnectedStatus);
+    ERROR(err, "Headset property Attach() failed!");
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::tstSetPropertyValueForNetworkStatus()
+// Returns: System error.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::tstSetPropertyValueForNetworkStatus( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TInt networkStatus(NULL);
+    // read parameters
+    if (aItem.GetNextInt(networkStatus))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: networkStatus.");
+        }
+    err = iPropertyNetworkStatus.Set(KStub_KUidSystemCategory, KUidNetworkStatusValue, networkStatus);
+    ERROR(err, "Network status property Attach() failed!");
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::tstSetPropertyValueForCallState()
+// Returns: System error.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::tstSetPropertyValueForCallState( CStifItemParser& aItem )
+    {
+    FUNC_LOG;
+    TInt err( KErrNone );
+    TInt callState(EFalse);
+    // read parameters
+    if (aItem.GetNextInt(callState))
+        {
+        err = KErrBadTestParameter;
+        ERROR(err, "Missing Parameter: callState.");
+        }
+    err = iPropertyCallState.Set(KStub_KPSUidCtsyCallInformation, KCTsyCallState, callState);
+    ERROR(err, "Call state property Attach() failed!");
+    return err;
+    }
+
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::HandleSystemEventL()
+// Returns: none.
+// -----------------------------------------------------------------------------
+void CUtilsTestModule::HandleSystemEventL(TRadioSystemEventType aEventType)
+    {
+    FUNC_LOG;
+    INFO_1("aEventType = %d", aEventType);
+
+    switch (aEventType)
+        {
+        case ERadioAudioResourcesAvailable:
+            {
+            INFO("ERadioAudioResourcesAvailable");
+            }
+            break;
+
+        case ERadioAudioAutoResumeForbidden:
+            {
+            INFO("ERadioAudioAutoResumeForbidden");
+            }
+            break;
+
+        case ERadioAudioRouteHeadset:
+            {
+            INFO("ERadioAudioRouteHeadset");
+            }
+            break;
+
+        case ERadioAudioRouteSpeaker:
+            {
+            INFO("ERadioAudioRouteSpeaker");
+            }
+            break;
+
+        case ERadioCallActivated:
+            {
+            INFO("ERadioCallActivated");
+            }
+            break;
+
+        case ERadioCallDeactivated:
+            {
+            INFO("ERadioCallDeactivated");
+            }
+            break;
+
+        case ERadioHeadsetConnected:
+            {
+            INFO("ERadioHeadsetConnected");
+            }
+            break;
+
+        case ERadioHeadsetDisconnected:
+            {
+            INFO("ERadioHeadsetDisconnected");
+            }
+            break;
+        default:
+            {
+            INFO("Unexpected event type");
+            break;
+            }
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::tstDefineAndAttachTestProperties()
+// Returns: none.
+// -----------------------------------------------------------------------------
+TInt CUtilsTestModule::tstDefineAndAttachTestProperties()
+    {
+    FUNC_LOG;
+    TInt err(RProperty::Define(KStub_KRadioPSUid,
+            SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected,
+            RProperty::EInt, KRadioServerReadPolicy,
+            KRadioServerWritePolicy));
+    ERROR(err, "Property SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected Define() failed!");
+    err = iPropertyHeadsetStatus.Attach(KStub_KRadioPSUid, SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected);
+    ERROR(err, "Property SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected Attach() failed!");
+    err = iPropertyCallState.Set(KStub_KRadioPSUid, SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected, EFalse);
+    ERROR(err, "Property SRadioStubManager::EStub_KRadioTestPSKeyHeadsetConnected Set() failed!");
+
+    err = RProperty::Define(KStub_KUidSystemCategory,
+            KUidNetworkStatusValue,
+            RProperty::EInt, KRadioServerReadPolicy,
+            KRadioServerWritePolicy);
+    ERROR(err, "Property KUidNetworkStatusValue Define() failed!");
+    err = iPropertyNetworkStatus.Attach(KStub_KUidSystemCategory, KUidNetworkStatusValue);
+    ERROR(err, "Property KUidNetworkStatusValue Attach() failed!");
+    err = iPropertyNetworkStatus.Set(KStub_KUidSystemCategory, KUidNetworkStatusValue, ESANetworkAvailable);
+    ERROR(err, "Property KUidNetworkStatusValue Set() failed!");
+   
+
+    err = RProperty::Define(KStub_KPSUidCtsyCallInformation,
+            KCTsyCallState,
+            RProperty::EInt, KRadioServerReadPolicy,
+            KRadioServerWritePolicy);
+    ERROR(err, "Property KCTsyCallState Define() failed!");
+    err = iPropertyCallState.Attach(KStub_KPSUidCtsyCallInformation, KCTsyCallState);
+    ERROR(err, "Property KCTsyCallState Attach() failed!");
+    err = iPropertyCallState.Set(KStub_KPSUidCtsyCallInformation, KCTsyCallState, EPSCTsyCallStateNone);
+    ERROR(err, "Property KCTsyCallState Set() failed!");
+    
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::InitSharedMemory
+// Returns: errors.
+// -----------------------------------------------------------------------------
+//
+TInt CUtilsTestModule::InitSharedMemory()
+
+    {
+    FUNC_LOG;
+    TInt err = iRadioStubManagerChunk.CreateGlobal(
+            KRadioStubManagerLocalChunkName, sizeof(SRadioStubManager),
+            sizeof(SRadioStubManager), EOwnerThread);
+    if (KErrAlreadyExists == err)
+        {
+        INFO("Memory chunk KRadioStubManagerLocalChunkName already exists.");
+        err = iRadioStubManagerChunk.OpenGlobal(
+                KRadioStubManagerLocalChunkName, EFalse, // == Read | Write
+                EOwnerThread);
+        }
+    if (KErrNone == err)
+        {
+        if (sizeof(SRadioStubManager) > iRadioStubManagerChunk.MaxSize())
+            {
+            err = KErrCorrupt;
+            INFO_1(
+                    "Improper size for memory chunk KRadioStubManagerLocalChunkName. Err = %i",
+                    err);
+            }
+        else
+            {
+            TUint8* basePtr = iRadioStubManagerChunk.Base();
+            if (!basePtr)
+                {
+                err = KErrCorrupt;
+                INFO_1(
+                        "Getting base pointer of memory chunk KRadioStubManagerLocalChunkName failed. Err=%i",
+                        err);
+                }
+            else
+                {
+                iRadioStubManager = (SRadioStubManager*) basePtr;
+                // Zero configuration/control data
+                iRadioStubManager->FillZ();
+                }
+            }
+        }
+    else
+        {
+        INFO_1(
+                "Creation of memory chunk KRadioStubManagerLocalChunkName failed. Err = %i",
+                err);
+        }
+    INFO_1("return value, Err = %i", err);
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::CreateSystemEventCollector2L
+// Returns: errors.
+// -----------------------------------------------------------------------------
+//
+TInt CUtilsTestModule::CreateSystemEventCollector2L()
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    if (!iSystemEventCollector)
+        {
+        iSystemEventCollector = CRadioSystemEventCollector::NewL();
+        iSystemEventCollector->AddObserverL(this);
+        }
+    else
+        {
+        INFO( "KErrAlreadyExists" )
+        err = KErrAlreadyExists;
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::AudioRouteChangedL
+// Returns: none
+// -----------------------------------------------------------------------------
+//
+void CUtilsTestModule::AudioRouteChangedL( RadioEngine::TRadioAudioRoute aRoute )
+    {
+    FUNC_LOG;
+    INFO_1( "aRoute = %i",  aRoute );
+    iRoute = aRoute;
+    
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::CreateAudioRouterL
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::CreateAudioRouterL(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+
+    TInt err(KErrNone);
+    err = InitSharedMemory();
+    if ((!iAudioRouter) && (KErrNone == err))
+        {
+        TRAP( err, RadioEngineUtils::InitializeL(); );
+        if (KErrNone != err)
+            {
+            INFO_1( "RadioEngineUtils::InitializeL() failed err = %i", err )
+            iRadioStubManagerChunk.Close();
+            }
+        else
+            {
+            TRAP( err, iAudioRouter = CRadioAudioRouter::NewL( *this ); );
+            if ( KErrNone != err )
+                {
+                INFO_1( "CRadioAudioRouter::NewL() failed err = %i", err )
+                iRadioStubManagerChunk.Close();
+                RadioEngineUtils::Release();
+                }
+            }
+        }
+    if ( KErrNoMemory == err )
+        {
+        User::Leave( err );
+        }
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::DestroyAudioRouter
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::DestroyAudioRouter(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    if (iAudioRouter)
+        {
+        iRadioStubManagerChunk.Close();
+        delete iAudioRouter;
+        iAudioRouter = NULL;
+        RadioEngineUtils::Release();
+        }
+    return KErrNone;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::OOMTestForAudioRouterCreation
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::OOMTestForAudioRouterCreation(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    err = InitSharedMemory();
+    if (KErrNone == err)
+        {
+        RadioEngineUtils::InitializeL();
+        TInt i(-1);
+        for (err = KErrNoMemory; KErrNoMemory == err; __UHEAP_MARKEND)
+            {
+            TRAP ( err,
+                        {
+                        ++i;
+                        INFO_1("loop count = %i", i );
+                        __UHEAP_MARK;
+                        __UHEAP_FAILNEXT( i );
+                        TRAP( err, CreateAudioRouter2L(); );
+                        if ( iAudioRouter )
+                            {
+                            delete iAudioRouter;
+                            iAudioRouter = NULL;
+                            }
+                        }
+            );
+            }
+        __UHEAP_RESET;
+        RadioEngineUtils::Release();
+        iRadioStubManagerChunk.Close();
+        }
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::CreateAudioRouter2L
+// Returns: errors.
+// -----------------------------------------------------------------------------
+//
+TInt CUtilsTestModule::CreateAudioRouter2L()
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    if (!iAudioRouter)
+        {
+        iAudioRouter = CRadioAudioRouter::NewL( *this );
+        }
+    else
+        {
+        INFO( "KErrAlreadyExists" )
+        err = KErrAlreadyExists;
+        }
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::CreateRoutableAudioL
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::CreateRoutableAudioL(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+
+    TInt err( CreateRoutableAudio2L() );
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::CreateRoutableAudio2L
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::CreateRoutableAudio2L()
+    {
+    FUNC_LOG;
+
+    TInt err(KErrNone);
+    if (!iRoutableAudio)
+        {
+        TRAP( err, iRoutableAudio = new (ELeave) CRadioRoutableAudio( iAudioRouter ); );
+        if ( KErrNone != err )
+            {
+            INFO_1( "new CRadioRoutableAudio failed err = %i", err )
+            }
+        }
+    if ( KErrNoMemory == err )
+        {
+        User::Leave( err );
+        }
+    return err;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::DestroyRoutableAudio
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::DestroyRoutableAudio(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    if (iRoutableAudio)
+        {
+        delete iRoutableAudio;
+        iRoutableAudio = NULL;
+        // Note that previous delete call destroyed also Audio Router.
+        iAudioRouter = NULL;
+        iRadioStubManagerChunk.Close();
+        RadioEngineUtils::Release();
+        }
+    return KErrNone;
+    }
+
+//-----------------------------------------------------------------------------
+// CUtilsTestModule::OOMTestForRoutableAudioCreation
+//-----------------------------------------------------------------------------
+TInt CUtilsTestModule::OOMTestForRoutableAudioCreation(CStifItemParser& /*aItem*/)
+    {
+    FUNC_LOG;
+    TInt err(KErrNone);
+    TInt i(-1);
+    for (err = KErrNoMemory; KErrNoMemory == err; __UHEAP_MARKEND)
+        {
+        ++i;
+        INFO_1("loop count = %i", i );
+        __UHEAP_MARK;
+        __UHEAP_FAILNEXT( i );
+        TRAP( err, CreateRoutableAudio2L(); );
+        if ( iRoutableAudio )
+            {
+            delete iRoutableAudio;
+            iRoutableAudio = NULL;
+            // Note that previous delete call destroyed also Audio Router.
+            iAudioRouter = NULL;
+            iRadioStubManagerChunk.Close();
+            RadioEngineUtils::Release();
+            }
+        }
+    __UHEAP_RESET;
+    return err;
+    }
+
+// -----------------------------------------------------------------------------
+// CUtilsTestModule::?member_function
+// ?implementation_description
+// (other items were commented in a header).
+// -----------------------------------------------------------------------------
+//
+/*
+TInt CUtilsTestModule::?member_function(
+   CItemParser& aItem )
+   {
+   FUNC_LOG;
+
+   ?code
+
+   }
+*/
+
+
+// ========================== OTHER EXPORTED FUNCTIONS =========================
+// None
+
+
+//  [End of File] - Do not remove
--- a/radiohswidget/inc/radiohswidget.h	Tue Oct 12 11:25:14 2010 +0300
+++ b/radiohswidget/inc/radiohswidget.h	Fri Oct 15 16:26:27 2010 +0300
@@ -21,6 +21,9 @@
 // System includes
 #include <HbWidget>
 
+// User includes
+#include "radio_global.h"
+
 // Forward declarations
 class HbLabel;
 class HbPushButton;
@@ -75,7 +78,8 @@
     enum InformationAreaLayout
     {
         OneRow,
-        TwoRows,
+        OneRowWithFavorite,
+        TwoRowsWithFavorite,
         Animation
     };
 
@@ -192,6 +196,7 @@
     void clearRadioInformation();
     
     void changeInformationAreaLayout(const InformationAreaLayout layout);
+    void changeFavoriteIcon(bool visibility);
     void changePowerButtonOn(const bool isPowerOn);
     void enableStationButtons();
     void defineButton(HbPushButton &target, const QString &graphicsId,
@@ -217,20 +222,29 @@
     HbPushButton *mPreviousButton;
     /*! Control button for next station. */
     HbPushButton *mNextButton;
-    /*! Layout for information area. */
+    /*! Layout for one row with favorite icon in information area. */
+    QGraphicsWidget *mInformationAreaOneRowWithFavoriteLayout;
+    /*! Label that is shown when there is only one row of information and
+        favorite icon is shown. */
+    HbLabel *mInformationOneRowWithFavoriteLabel;
+    /*! Layout for two rows in information area. */
     QGraphicsWidget *mInformationAreaTwoRowsLayout;
     /*! Label that is shown when there is only one row of information. */
     HbLabel *mInformationLonelyRowLabel;
     /*! Label for first row when there is two rows of information. */
-    HbLabel *mInformationFirstRowLabel;
+    HbLabel *mInformationFirstRowWithFavoriteLabel;
     // TODO: This label should be modified to support marquee scrolling when Orbit supports it.
     /*! Label for first second when there is two rows of information. */
     HbLabel *mInformationSecondRowLabel;
     /*! Label for displaying animation. */
     HbLabel *mAnimationIcon;
+    /*! Icon for displaying favorite/unfavorite star. */
+    HbLabel *mFavoriteIcon;
     
     /*! Stores the state of the FM Radio application. */
     FmRadio::State mFmRadioState;
+    /*! Stores the region of the FM Radio. Needed for the genre localization. */
+    RadioRegion::Region mRadioRegion;
 
     /*! Stores the count of favorite stations. */
     int mFavoriteStationCount;
--- a/radiohswidget/resource/fmradiohswidget.docml	Tue Oct 12 11:25:14 2010 +0300
+++ b/radiohswidget/resource/fmradiohswidget.docml	Fri Oct 15 16:26:27 2010 +0300
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<hbdocument version="1.1">
+<hbdocument version="1.2">
     <widget name="mainLayout" type="HbWidget">
         <widget name="contentLayout" type="HbWidget">
             <widget name="controlButtons" type="HbWidget">
@@ -38,25 +38,38 @@
                         <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-secondary)"/>
                     </widget>
                     <widget name="twoRowsLayout" type="HbWidget">
-                        <widget name="firstRowLabel" type="HbLabel">
-                            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
-                            <real name="z" value="1"/>
-                            <sizehint type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
-                            <string locid="label for first row in two row layout" name="plainText"/>
-                            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-secondary)"/>
-                        </widget>
                         <widget name="secondRowLabel" type="HbLabel">
                             <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
                             <real name="z" value="2"/>
-                            <sizehint type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
+                            <sizehint height="expr(( (10un - 2 * 1.5un) - var(hb-param-margin-gene-middle-vertical) )  / 2)" type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
                             <string locid="label for second row in two row layout" name="plainText"/>
                             <fontspec name="fontSpec" role="Secondary" textheight="var(hb-param-text-height-secondary)"/>
                         </widget>
+                        <widget name="firstRowWithFavoriteLayout" type="HbWidget">
+                            <widget name="firstRowWithFavoriteLabel" type="HbLabel">
+                                <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                                <real name="z" value="0"/>
+                                <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                                <sizehint height="expr(( (10un - 2 * 1.5un) - var(hb-param-margin-gene-middle-vertical) )  / 2)" type="PREFERRED" width="expr(32un - ( 2 * (var(hb-param-graphic-size-secondary) + 2 * var(hb-param-margin-gene-middle-horizontal))))"/>
+                                <string name="toolTipText"/>
+                                <string name="windowTitle"/>
+                                <string name="textColor" value="#000000"/>
+                                <string name="plainText"/>
+                                <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-secondary)"/>
+                            </widget>
+                            <real name="z" value="4"/>
+                            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                            <sizehint height="expr(( (10un - 2 * 1.5un) - var(hb-param-margin-gene-middle-vertical) )  / 2)" type="PREFERRED" width="30.5un"/>
+                            <layout orientation="Horizontal" spacing="0un" type="linear">
+                                <contentsmargins bottom="0un" left="expr(( var(hb-param-graphic-size-secondary) + var(hb-param-margin-gene-middle-horizontal)  ))" right="0un" top="0un"/>
+                                <linearitem itemname="firstRowWithFavoriteLabel"/>
+                            </layout>
+                        </widget>
                         <real name="z" value="3"/>
                         <sizehint height="expr(10un - 2 * 1.5un  )" type="PREFERRED" width="expr(32un - 2 * var(hb-param-margin-gene-middle-horizontal) )"/>
                         <layout orientation="Vertical" spacing="var(hb-param-margin-gene-middle-vertical)" type="linear">
                             <contentsmargins bottom="0un" left="0un" right="0un" top="0un"/>
-                            <linearitem itemname="firstRowLabel"/>
+                            <linearitem itemname="firstRowWithFavoriteLayout"/>
                             <linearitem itemname="secondRowLabel"/>
                         </layout>
                     </widget>
@@ -64,24 +77,62 @@
                         <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
                         <sizehint height="var(hb-param-graphic-size-primary-medium)" type="PREFERRED" width="var(hb-param-graphic-size-primary-medium)"/>
                     </widget>
+                    <widget name="oneRowWithFavoriteLayout" type="HbWidget">
+                        <widget name="oneRowWithFavoriteLabel" type="HbLabel">
+                            <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                            <real name="z" value="0"/>
+                            <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                            <sizehint height="11.9403un" type="PREFERRED" width="expr(32un - ( 2 * (var(hb-param-graphic-size-secondary) + 2 * var(hb-param-margin-gene-middle-horizontal))))"/>
+                            <string name="toolTipText"/>
+                            <string name="windowTitle"/>
+                            <string name="textColor" value="#000000"/>
+                            <string name="plainText"/>
+                            <fontspec name="fontSpec" role="Primary" textheight="var(hb-param-text-height-secondary)"/>
+                        </widget>
+                        <real name="z" value="1"/>
+                        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
+                        <sizehint height="11.9403un" type="PREFERRED" width="30.5un"/>
+                        <layout orientation="Horizontal" spacing="0un" type="linear">
+                            <contentsmargins bottom="0un" left="expr(( var(hb-param-graphic-size-secondary) + var(hb-param-margin-gene-middle-horizontal)  ))" right="0un" top="0un"/>
+                            <linearitem itemname="oneRowWithFavoriteLabel"/>
+                        </layout>
+                    </widget>
                     <real name="z" value="1"/>
                     <sizepolicy horizontalPolicy="Preferred" horizontalStretch="0" verticalPolicy="Preferred" verticalStretch="0"/>
                     <sizehint height="7un" type="PREFERRED" width="30.5un"/>
                     <sizehint height="expr(10un - 2 * 1.5un)" type="MINIMUM" width="expr(32un - 4   * var(hb-param-margin-gene-middle-horizontal))"/>
                     <contentsmargins bottom="1.5un" left="var(hb-param-margin-gene-middle-horizontal)" right="var(hb-param-margin-gene-middle-horizontal)" top="1.5un"/>
                     <sizehint height="2504062.01158un" type="MAXIMUM" width="2504062.01158un"/>
+                    <bool name="visible" value="TRUE"/>
                     <layout type="stacked">
                         <stackitem itemname="lonelyRowLabel"/>
                         <stackitem itemname="twoRowsLayout"/>
                         <stackitem itemname="animationIcon"/>
+                        <stackitem itemname="oneRowWithFavoriteLayout"/>
                     </layout>
                 </widget>
                 <widget name="tunerBackgroundPushButton" type="HbPushButton">
                     <sizehint height="10un" type="PREFERRED" width="32un"/>
                     <sizehint type="MINIMUM" width="32un"/>
                     <string name="text"/>
+                    <bool name="visible" value="TRUE"/>
                     <string name="state" value="normal"/>
                 </widget>
+                <widget name="favoriteIconLayout" type="HbWidget">
+                    <widget name="favoriteIcon" type="HbLabel">
+                        <icon iconName="qtg_small_favorite" name="icon"/>
+                        <real name="z" value="2"/>
+                        <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
+                        <sizehint height="var(hb-param-graphic-size-secondary)" type="MAXIMUM" width="var(hb-param-graphic-size-secondary)"/>
+                        <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+                    </widget>
+                    <real name="z" value="0"/>
+                    <sizehint height="10un" type="PREFERRED" width="32un"/>
+                    <layout orientation="Horizontal" spacing="0un" type="linear">
+                        <contentsmargins bottom="0un" left="0.75un" right="0un" top="0.75un"/>
+                        <linearitem itemname="favoriteIcon"/>
+                    </layout>
+                </widget>
                 <real name="z" value="3"/>
                 <sizehint height="10un" type="PREFERRED" width="32un"/>
                 <sizehint height="10un" type="MINIMUM" width="32un"/>
@@ -89,6 +140,7 @@
                 <layout type="stacked">
                     <stackitem itemname="tunerInformationStackedLayout"/>
                     <stackitem itemname="tunerBackgroundPushButton"/>
+                    <stackitem itemname="favoriteIconLayout"/>
                 </layout>
             </widget>
             <real name="z" value="2"/>
@@ -104,11 +156,14 @@
         </widget>
         <widget name="background" type="HbLabel">
             <enums name="alignment" value="AlignVCenter|AlignHCenter"/>
+            <icon iconName="qtg_graf_hsradio_bg" name="icon"/>
             <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
             <sizehint height="26.5un" type="FIXED" width="37un"/>
-            <icon iconName="qtg_graf_hsradio_bg" name="icon"/>
+            <sizehint height="26.5un" type="MINIMUM" width="37un"/>
+            <sizehint height="26.5un" type="MAXIMUM" width="37un"/>
         </widget>
         <real name="z" value="1"/>
+        <rect height="26.5un" name="geometry" width="37un" x="0un" y="0un"/>
         <sizepolicy horizontalPolicy="Fixed" horizontalStretch="0" verticalPolicy="Fixed" verticalStretch="0"/>
         <sizehint height="26.5un" type="FIXED" width="37un"/>
         <layout type="stacked">
--- a/radiohswidget/src/radiohswidget.cpp	Tue Oct 12 11:25:14 2010 +0300
+++ b/radiohswidget/src/radiohswidget.cpp	Fri Oct 15 16:26:27 2010 +0300
@@ -35,7 +35,7 @@
 #include "radiohswidgetprofilereader.h"
 #include "radiohswidgetradioserviceclient.h"
 #include "radioservicedef.h"
-#include "radio_global.h"
+#include "radiogenrelocalizer.h"
 #include "radiologger.h"
 
 // Constants
@@ -51,9 +51,27 @@
     "tunerBackgroundPushButton");
 /**  DOCML object name for tunerStackedLayout */
 const QString DOCML_OBJECT_NAME_TUNER_STACKED_LAYOUT("tunerStackedLayout");
+/**  DOCML object name for favoriteIconLayout */
+const QString DOCML_OBJECT_NAME_FAVORITE_ICON_LAYOUT("favoriteIconLayout");
+/**  DOCML object name for favoriteIcon */
+const QString DOCML_OBJECT_NAME_FAVORITE_ICON("favoriteIcon");
 /**  DOCML object name for tunerInformationStackedLayout */
 const QString DOCML_OBJECT_NAME_TUNER_INFORMATION_STACKED_LAYOUT(
     "tunerInformationStackedLayout");
+/**  DOCML object name for lonelyRowLabel */
+const QString DOCML_OBJECT_NAME_LONELY_ROW_LABEL("lonelyRowLabel");
+/**  DOCML object name for animationIcon */
+const QString DOCML_OBJECT_NAME_ANIMATION_ICON("animationIcon");
+/**  DOCML object name for oneRowWithFavoriteLayout */
+const QString DOCML_OBJECT_NAME_ONE_ROW_WITH_FAVORITE_LAYOUT("oneRowWithFavoriteLayout");
+/**  DOCML object name for oneRowWithFavoriteLabel */
+const QString DOCML_OBJECT_NAME_ONE_ROW_WITH_FAVORITE_LABEL("oneRowWithFavoriteLabel");
+/**  DOCML object name for twoRowsLayout */
+const QString DOCML_OBJECT_NAME_TWO_ROWS_LAYOUT("twoRowsLayout");
+/**  DOCML object name for firstRowWithFavoriteLabel */
+const QString DOCML_OBJECT_NAME_FIRST_ROW_WITH_FAVORITE_LABEL("firstRowWithFavoriteLabel");
+/**  DOCML object name for secondRowLabel */
+const QString DOCML_OBJECT_NAME_SECOND_ROW_LABEL("secondRowLabel");
 /**  DOCML object name for controlButtons */
 const QString DOCML_OBJECT_NAME_CONTROL_BUTTONS_LAYOUT("controlButtons");
 /**  DOCML object name for powerToggleButton */
@@ -62,16 +80,6 @@
 const QString DOCML_OBJECT_NAME_PREVIOUS_BUTTON("previousPushButton");
 /**  DOCML object name for nextPushButton */
 const QString DOCML_OBJECT_NAME_NEXT_BUTTON("nextPushButton");
-/**  DOCML object name for twoRowsLayout */
-const QString DOCML_OBJECT_NAME_TWO_ROWS_LAYOUT("twoRowsLayout");
-/**  DOCML object name for firstRowLabel */
-const QString DOCML_OBJECT_NAME_FIRST_ROW_LABEL("firstRowLabel");
-/**  DOCML object name for secondRowLabel */
-const QString DOCML_OBJECT_NAME_SECOND_ROW_LABEL("secondRowLabel");
-/**  DOCML object name for lonelyRowLabel */
-const QString DOCML_OBJECT_NAME_LONELY_ROW_LABEL("lonelyRowLabel");
-/**  DOCML object name for animationIcon */
-const QString DOCML_OBJECT_NAME_ANIMATION_ICON("animationIcon");
 
 /** Unknown favorite station count. */
 const int FAVORITE_STATION_COUNT_UNDEFINED(0);
@@ -113,6 +121,10 @@
 const QString TUNER_BUTTON_NORMAL_ON("qtg_fr_tuner");
 const QString TUNER_BUTTON_NORMAL_PRESSED("qtg_fr_hsitems2_pressed");
 
+// Favorite icon graphics names for favorite and non-favorite names
+const QString FAVORITE_ICON_NAME("qtg_small_favorite");
+const QString NON_FAVORITE_ICON_NAME("qtg_small_star_non_favourited");
+
 /*!
     \class RadioHsWidget
     \brief Implementation of FM Radio home screen widget.
@@ -138,10 +150,12 @@
       mNextButton(NULL),
       mInformationAreaTwoRowsLayout(NULL),
       mInformationLonelyRowLabel(NULL),
-      mInformationFirstRowLabel(NULL),
+      mInformationFirstRowWithFavoriteLabel(NULL),
       mInformationSecondRowLabel(NULL),
       mAnimationIcon(NULL),
+      mFavoriteIcon(NULL),
       mFmRadioState(FmRadio::StateUndefined),
+      mRadioRegion(RadioRegion::None),
       mFavoriteStationCount(FAVORITE_STATION_COUNT_UNDEFINED),
       mLocalStationCount(LOCAL_STATION_COUNT_UNDEFINED),
       mCurrentStationIsFavorite(false),
@@ -169,6 +183,16 @@
     const QVariant &information)
 {
     LOG_METHOD;
+    
+    if ((informationType == RadioServiceNotification::RadioText
+        || informationType == RadioServiceNotification::DynamicPS) 
+        && !mRadioInformation.contains(Frequency))
+    {
+        // there's not yet station set in widget, the information is most likely from the previous station 
+        LOG("RadioHsWidget::handleRadioInformationChange: transitioning between stations, discarding update");
+        return;
+    }
+    
     switch (informationType) {
 
     case RadioServiceNotification::FavoriteCount:
@@ -202,6 +226,11 @@
         if (information.canConvert(QVariant::Bool)) {
             mCurrentStationIsFavorite = information.toBool();
             LOG_FORMAT("currentIsFavorite: %d", mCurrentStationIsFavorite);
+            if (mFavoriteIcon->isVisible()) {
+                changeFavoriteIcon(true);
+            } else {
+                changeFavoriteIcon(false);
+            }
         }
         break;
 
@@ -211,22 +240,22 @@
             const int status = information.toInt();
             switch (status) {
             case RadioStatus::Playing:
-                LOG("Playing");
+                LEVEL2(LOG("RadioStatus::Playing"));
                 handleRadioStateChange(FmRadio::StateRunning);
                 break;
             case RadioStatus::Muted:
-                LOG("Muted");
+                LEVEL2(LOG("RadioStatus::Muted"));
                 break;
             case RadioStatus::Seeking:
-                LEVEL2(LOG("Seeking"));
+                LEVEL2(LOG("RadioStatus::Seeking"));
                 handleRadioStateChange(FmRadio::StateSeeking);
                 break;
             case RadioStatus::NoAntenna:
-                LEVEL2(LOG("NoAntenna"));
+                LEVEL2(LOG("RadioStatus::NoAntenna"));
                 handleRadioStateChange(FmRadio::StateAntennaNotConnected);
                 break;
             case RadioStatus::PoweringOff:
-                LEVEL2(LOG("PoweringOff"));
+                LEVEL2(LOG("RadioStatus::PoweringOff"));
                 handleRadioStateChange(FmRadio::StateClosing);
                 break;
             default:
@@ -240,19 +269,16 @@
         LOG("Frequency");
         // TODO: Should information.toString() be checked for too many characters? What's the limit?
         if (information.canConvert(QVariant::String)) {
-            LOG_FORMAT("frequency: %s", GETSTRING(information.toString()));
-            // TODO: Remove comment when localisation is working on device.
-            //frequencyString = hbTrId("txt_fmradiohswidget_rad_list_l1_mhz").arg(freqString);
+            LEVEL2(LOG_FORMAT("frequency: %s", GETSTRING(information.toString())));
             bool frequencyCleared = false;
-
             if (mRadioInformation.contains(Frequency)) {
                 // Clear all infromation.
                 clearRadioInformation();
                 frequencyCleared = true;
             }
             // If widget do not have any frquency information, update it.
-            bool frequencyUpdated = updateRadioInformation(Frequency,
-                information.toString());
+            QString frequencyString = hbTrId("txt_fmradiohswidget_rad_list_l1_mhz").arg(information.toString());
+            bool frequencyUpdated = updateRadioInformation(Frequency, frequencyString);
             if (frequencyCleared || frequencyUpdated) {
                 // Information changed, update the UI.
                 changeInRadioInformation();
@@ -268,7 +294,13 @@
 
     case RadioServiceNotification::Genre:
         LOG("Genre");
-        handleSimilarRadioInformation(Pty, information);
+        if (information.canConvert(QVariant::Int) &&
+            mRadioRegion != RadioRegion::None) {
+            const int genre = information.toInt();
+            QString localizedGenre(RadioGenreLocalizer::genreToString(
+                mRadioRegion, genre, GenreTarget::HomeScreen));
+            handleSimilarRadioInformation(Pty, localizedGenre);
+        }
         break;
 
     case RadioServiceNotification::RadioText:
@@ -281,6 +313,38 @@
         handleSimilarRadioInformation(DynamicPsName, information);
         break;
 
+    case RadioServiceNotification::Region:
+        LOG("Region");
+        if (information.canConvert(QVariant::Int)) {
+            const int region = information.toInt();
+            switch (region) {
+            case RadioRegion::None:
+                LEVEL2(LOG("RadioRegion::None"));
+                mRadioRegion = RadioRegion::None;
+                break;
+            case RadioRegion::Default:
+                LEVEL2(LOG("RadioRegion::Default"));
+                mRadioRegion = RadioRegion::Default;
+                break;
+            case RadioRegion::Japan:
+                LEVEL2(LOG("RadioRegion::Japan"));
+                mRadioRegion = RadioRegion::Japan;
+                break;
+            case RadioRegion::America:
+                LEVEL2(LOG("RadioRegion::America"));
+                mRadioRegion = RadioRegion::America;
+                break;
+            case RadioRegion::Poland:
+                LEVEL2(LOG("RadioRegion::Poland"));
+                mRadioRegion = RadioRegion::Poland;
+                break;
+            default:
+                LOG("default case at case RadioRegion");
+                break;
+            }
+        }
+        break;
+        
     default:
         LOG("default case at notificationId");
         break;
@@ -323,7 +387,7 @@
         mCurrentStationIsFavorite = false;
         enableStationButtons();
         clearRadioInformation();
-        mInformationFirstRowLabel->setPlainText("");
+        mInformationFirstRowWithFavoriteLabel->setPlainText("");
         mInformationSecondRowLabel->setPlainText("");
         mInformationLonelyRowLabel->setPlainText(hbTrId("txt_fmradiohswidget_rad_list_fm_radio"));
         changeInformationAreaLayout(OneRow);
@@ -341,13 +405,13 @@
     case FmRadio::StateRunning:
         LOG("FmRadio::StateRunning");
         mFmRadioState = FmRadio::StateRunning;
-        // Stop timer if it is running because radio is now running.
+        mRadioServiceClient->stopMonitoring();
         mRadioServiceClient->startMonitoring(
             FmRadio::VisibiltyDoNotChange);
         changeInRadioInformation();
         changePowerButtonOn(true);
         enableStationButtons();
-        changeInformationAreaLayout(OneRow);
+        changeInformationAreaLayout(OneRowWithFavorite);
         break;
     case FmRadio::StateSeeking:
         LOG("FmRadio::StateSeeking");
@@ -361,7 +425,7 @@
         mFmRadioState = FmRadio::StateAntennaNotConnected;
         mCurrentStationIsFavorite = false;
         enableStationButtons();
-        mInformationFirstRowLabel->setPlainText("");
+        mInformationFirstRowWithFavoriteLabel->setPlainText("");
         mInformationSecondRowLabel->setPlainText("");
         mInformationLonelyRowLabel->setPlainText(hbTrId(
             "txt_fmradiohswidget_rad_info_connect_wired_headset"));
@@ -376,7 +440,7 @@
         mCurrentStationIsFavorite = false;
         enableStationButtons();
         clearRadioInformation();
-        mInformationFirstRowLabel->setPlainText("");
+        mInformationFirstRowWithFavoriteLabel->setPlainText("");
         mInformationSecondRowLabel->setPlainText("");
         mInformationLonelyRowLabel->setPlainText(hbTrId(
             "txt_fmradiohswidget_rad_list_fm_radio"));
@@ -632,6 +696,15 @@
                     DOCML_OBJECT_NAME_TUNER_INFORMATION_STACKED_LAYOUT));
                 if (tunerInformationStackedLayout) {
                 }
+                
+                // Find favorite icon.
+                mFavoriteIcon = qobject_cast<HbLabel *> (
+                    documentLoader->findWidget(
+                        DOCML_OBJECT_NAME_FAVORITE_ICON));
+                if (mFavoriteIcon) {
+                    mFavoriteIcon->setIcon(HbIcon(NON_FAVORITE_ICON_NAME));
+                    mFavoriteIcon->setVisible(false);
+                }
 
                 // Find lonely label
                 mInformationLonelyRowLabel = qobject_cast<HbLabel *> (
@@ -643,6 +716,36 @@
                         "qtc_radio_tuner_normal");
                     mInformationLonelyRowLabel->setTextColor(color);
                 }
+                
+                mAnimationIcon = qobject_cast<HbLabel *> (
+                    documentLoader->findWidget(
+                        DOCML_OBJECT_NAME_ANIMATION_ICON));
+                if (mAnimationIcon) {
+                    // Use animation manager to access anim loading animation.
+                    HbIconAnimationManager *animationManager =
+                        HbIconAnimationManager::global();
+                    // TODO: Axml extension can be removed after wk24 release.
+                    animationManager->addDefinitionFile(QLatin1String(
+                        "qtg_anim_loading.axml"));
+                    mAnimationIcon->setIcon(HbIcon("qtg_anim_loading"));
+                }
+
+                // Find layout for one row with favorite icon
+                mInformationAreaOneRowWithFavoriteLayout = qobject_cast<
+                        QGraphicsWidget *> (documentLoader->findObject(
+                        DOCML_OBJECT_NAME_ONE_ROW_WITH_FAVORITE_LAYOUT));
+                if (mInformationAreaOneRowWithFavoriteLayout) {
+                    // Find one row
+                    mInformationOneRowWithFavoriteLabel = qobject_cast<
+                        HbLabel *> (documentLoader->findWidget(
+                        DOCML_OBJECT_NAME_ONE_ROW_WITH_FAVORITE_LABEL));
+                    if (mInformationOneRowWithFavoriteLabel) {
+                        // TODO: Set the color in docml when application designer supports it.
+                        QColor color = HbColorScheme::color(
+                            "qtc_radio_tuner_normal");
+                        mInformationOneRowWithFavoriteLabel->setTextColor(color);
+                    }
+                }
 
                 // Find layout for two rows
                 mInformationAreaTwoRowsLayout = qobject_cast<
@@ -650,14 +753,14 @@
                     DOCML_OBJECT_NAME_TWO_ROWS_LAYOUT));
                 if (mInformationAreaTwoRowsLayout) {
                     // Find first row
-                    mInformationFirstRowLabel = qobject_cast<HbLabel *> (
+                    mInformationFirstRowWithFavoriteLabel = qobject_cast<HbLabel *> (
                         documentLoader->findWidget(
-                            DOCML_OBJECT_NAME_FIRST_ROW_LABEL));
-                    if (mInformationFirstRowLabel) {
+                            DOCML_OBJECT_NAME_FIRST_ROW_WITH_FAVORITE_LABEL));
+                    if (mInformationFirstRowWithFavoriteLabel) {
                         // TODO: Set the color in docml when application designer supports it.
                         QColor color = HbColorScheme::color(
                             "qtc_radio_tuner_normal");
-                        mInformationFirstRowLabel->setTextColor(color);
+                        mInformationFirstRowWithFavoriteLabel->setTextColor(color);
                     }
 
                     // Find second row
@@ -672,35 +775,23 @@
                     }
                 }
 
-                mAnimationIcon = qobject_cast<HbLabel *> (
+                // Find push button for tuner area.
+                mInformationAreaBackgroundButton = qobject_cast<HbPushButton*> (
                     documentLoader->findWidget(
-                        DOCML_OBJECT_NAME_ANIMATION_ICON));
-                if (mAnimationIcon) {
-                    // Use animation manager to access anim loading animation.
-                    HbIconAnimationManager *animationManager =
-                        HbIconAnimationManager::global();
-                    // TODO: Axml extension can be removed after wk24 release.
-                    animationManager->addDefinitionFile(QLatin1String(
-                        "qtg_anim_loading.axml"));
-                    mAnimationIcon->setIcon(HbIcon("qtg_anim_loading"));
+                        DOCML_OBJECT_NAME_TUNER_BACKGROUND_BUTTON));
+                if (mInformationAreaBackgroundButton) {
+                    // Use the frame background.
+                    HbFrameDrawer *tunerBackgroundButtonFrameDrawer =
+                        new HbFrameDrawer("qtg_fr_tuner",
+                            HbFrameDrawer::ThreePiecesHorizontal);
+                    tunerBackgroundButtonFrameDrawer->setFillWholeRect(true);
+                    mInformationAreaBackgroundButton->setFrameBackground(
+                        tunerBackgroundButtonFrameDrawer);
+                    // Connect the button's clicked signal. 
+                    Radio::connect(mInformationAreaBackgroundButton,
+                        SIGNAL(clicked()), this, SLOT(changeRadioToForeground()));
                 }
-            }
-
-            // Find push button for tuner area.
-            mInformationAreaBackgroundButton = qobject_cast<HbPushButton*> (
-                documentLoader->findWidget(
-                    DOCML_OBJECT_NAME_TUNER_BACKGROUND_BUTTON));
-            if (mInformationAreaBackgroundButton) {
-                // Use the frame background.
-                HbFrameDrawer *tunerBackgroundButtonFrameDrawer =
-                    new HbFrameDrawer("qtg_fr_tuner",
-                        HbFrameDrawer::ThreePiecesHorizontal);
-                tunerBackgroundButtonFrameDrawer->setFillWholeRect(true);
-                mInformationAreaBackgroundButton->setFrameBackground(
-                    tunerBackgroundButtonFrameDrawer);
-                // Connect the button's clicked signal. 
-                Radio::connect(mInformationAreaBackgroundButton,
-                    SIGNAL(clicked()), this, SLOT(changeRadioToForeground()));
+                
             }
 
             // Find layout for control buttons.
@@ -860,15 +951,27 @@
     
     // If second row is empty.
     if (mRadioInformationSecondRow.isEmpty()) {
-        // Show only the lonely row.
-        mInformationLonelyRowLabel->setPlainText(mRadioInformationFirstRow);
-        changeInformationAreaLayout(OneRow);
-    }
-    else {
+        if (mCurrentStationIsFavorite) {
+            // Show favorite icon and one row.
+            mInformationOneRowWithFavoriteLabel->setPlainText(mRadioInformationFirstRow);
+            qreal width = mInformationOneRowWithFavoriteLabel->rect().width();
+            QFont font = mInformationOneRowWithFavoriteLabel->font();
+            QFontMetrics fm(font);
+            int textWidth = fm.width(mRadioInformationFirstRow);
+            if (width < textWidth) {
+                int a = 4;
+            }
+            changeInformationAreaLayout(OneRowWithFavorite);
+        } else {
+            // Show only the lonely row.
+            mInformationLonelyRowLabel->setPlainText(mRadioInformationFirstRow);
+            changeInformationAreaLayout(OneRowWithFavorite);
+        }
+    } else {
         // Else display both rows.
-        mInformationFirstRowLabel->setPlainText(mRadioInformationFirstRow);
+        mInformationFirstRowWithFavoriteLabel->setPlainText(mRadioInformationFirstRow);
         mInformationSecondRowLabel->setPlainText(mRadioInformationSecondRow);
-        changeInformationAreaLayout(TwoRows);
+        changeInformationAreaLayout(TwoRowsWithFavorite);
     }
 }
 
@@ -890,12 +993,36 @@
 void RadioHsWidget::changeInformationAreaLayout(const InformationAreaLayout layout)
 {
     LOG_METHOD_ENTER;
+    if (layout == OneRowWithFavorite || layout == TwoRowsWithFavorite) {
+        changeFavoriteIcon(true);
+    } else {
+        changeFavoriteIcon(false);
+    }
     mInformationLonelyRowLabel->setVisible(layout == OneRow);
-    mInformationAreaTwoRowsLayout->setVisible(layout == TwoRows);
+    mInformationAreaOneRowWithFavoriteLayout->setVisible(layout == OneRowWithFavorite);
+    mInformationAreaTwoRowsLayout->setVisible(layout == TwoRowsWithFavorite);
     mAnimationIcon->setVisible(layout == Animation);
 }
 
 /*!
+    Changes visibility of favorite icon. Changes also the icon between
+    favorite and unfavorite.
+
+    \param visibility \c true favorite icon is visible and \c false the icon
+    is invisible.
+ */
+void RadioHsWidget::changeFavoriteIcon(bool visibility)
+{
+    LEVEL2(LOG_METHOD);
+    if (mCurrentStationIsFavorite) {
+        mFavoriteIcon->setIcon(HbIcon(FAVORITE_ICON_NAME));
+    } else {
+        mFavoriteIcon->setIcon(HbIcon(NON_FAVORITE_ICON_NAME));
+    }
+    mFavoriteIcon->setVisible(visibility);
+}
+
+/*!
     Changes state of power button.
     
     \param isPowerOn \c true the power is on and \c false the power is off.
@@ -905,9 +1032,15 @@
     LEVEL2(LOG_METHOD);
     if (isPowerOn) {
         LEVEL2(LOG("Power on"));
+        // TODO: Temporarily set the text to clarify the action it performs.
+        // Remove when graphics displays the difference.
+        mPowerButton->setText("Off");
         buttonEvent(Power, Latched);
     } else {
         LEVEL2(LOG("Power off"));
+        // TODO: Temporarily set the text to clarify the action it performs.
+        // Remove when graphics displays the difference.
+        mPowerButton->setText("On");
         buttonEvent(Power, Normal);
     }
 }
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/create_and_sign_sis.bat	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,22 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+set NAME=%1
+
+del %NAME%.sisx
+call makesis %NAME%.pkg
+call signsis %NAME%.sis %NAME%.sisx nokia_rndcert_02.der nokia_rndcert_02.key
+del %NAME%.sis
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/create_data_sis.bat	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,17 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+call create_and_sign_sis.bat radio_data
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/create_tester_sis.bat	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,17 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+call create_and_sign_sis.bat fmradio-tester
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/create_ui_udeb_sis.bat	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,21 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+call create_and_sign_sis.bat radioenginecenrep
+call create_and_sign_sis.bat fmradio-udeb
+call create_and_sign_sis.bat errrd
+
+del radioenginecenrep.sisx
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/create_ui_urel_sis.bat	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,21 @@
+@rem
+@rem Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
+@rem All rights reserved.
+@rem This component and the accompanying materials are made available
+@rem under the terms of "Eclipse Public License v1.0"
+@rem which accompanies this distribution, and is available
+@rem at the URL "http://www.eclipse.org/legal/epl-v10.html".
+@rem
+@rem Initial Contributors:
+@rem Nokia Corporation - initial contribution.
+@rem
+@rem Contributors:
+@rem
+@rem Description: 
+@rem
+
+call create_and_sign_sis.bat radioenginecenrep
+call create_and_sign_sis.bat fmradio-urel
+call create_and_sign_sis.bat errrd
+
+del radioenginecenrep.sisx
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/errrd.pkg	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,32 @@
+;
+; 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:
+;
+
+; Language
+&EN
+
+; SIS header: name, uid, version
+#{"ErrRd file"},(0xC0FFEE),1,0,0
+
+; Localised Vendor name
+%{"Nokia, Qt Software"}
+
+; Unique Vendor name
+:"Nokia, Qt Software"
+
+; Dependencies
+[0x101F7961],0,0,0,{"S60ProductID"}
+
+"errrd" - "c:\resource\errrd"
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/fmradio-tester.pkg	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,38 @@
+;
+; 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:
+;
+
+; Languages
+&EN
+
+; Package header
+#{"fmradio"}, (0xC0FFEE), 1, 0, 0, TYPE=SA, RU
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Platform Dependency
+[0x101F7961],0,0,0,{"S60ProductID"}
+
+; -------- files --------
+
+;; application files
+"/epoc32/release/armv5/urel/fmradiotester.exe"                            - "c:/sys/bin/fmradiotester.exe"
+"/epoc32/data/z/resource/apps/fmradiotester.rsc"                          - "c:/resource/apps/fmradiotester.rsc"
+"/epoc32/data/z/private/10003a3f/import/apps/fmradiotester_reg.rsc"       - "c:/private/10003a3f/import/apps/fmradiotester_reg.rsc"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/fmradio-udeb.pkg	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,75 @@
+;
+; 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:
+; Package file for FMRadio
+;
+
+; Languages
+&EN
+
+; Package header
+#{"fmradio"}, (0x2002FF53), 1, 0, 0, TYPE=SA, RU
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Platform Dependency
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x20032DE7 ],0,0,0,{"S60ProductID"} ; Symbian^4
+
+; -------- files --------
+
+;; application files
+"/epoc32/release/armv5/udeb/fmradio.exe"                            - "c:/sys/bin/fmradio.exe"
+"/epoc32/data/z/resource/apps/fmradio.rsc"                          - "c:/resource/apps/fmradio.rsc"
+"/epoc32/data/z/resource/apps/fmradio.r01"                          - "c:/resource/apps/fmradio.r01"
+"/epoc32/data/z/resource/apps/fmradio.mif"                          - "c:/resource/apps/fmradio.mif"
+"/epoc32/data/z/private/10003a3f/import/apps/fmradio_reg.rsc"       - "c:/private/10003a3f/import/apps/fmradio_reg.rsc"
+
+;; Localization
+"/epoc32/data/z/resource/qt/translations/fmradio_en.qm"             - "c:/resource/qt/translations/fmradio.qm"
+"/epoc32/data/z/resource/qt/translations/radiohswidget.qm"          - "c:/resource/qt/translations/radiohswidget.qm"
+
+;; Engine QT wrapper, ui engine and preset utility wrapper
+"/epoc32/release/armv5/udeb/fmradioenginewrapper.dll"               - "c:/sys/bin/fmradioenginewrapper.dll"
+"/epoc32/release/armv5/udeb/fmradiopresetstorage.dll"               - "c:/sys/bin/fmradiopresetstorage.dll"
+"/epoc32/release/armv5/udeb/fmradiouiengine.dll"                    - "c:/sys/bin/fmradiouiengine.dll"
+"/epoc32/release/armv5/udeb/fmradiowidgets.dll"                     - "c:/sys/bin/fmradiowidgets.dll"
+"/epoc32/release/armv5/udeb/fmradiowidgetsplugin.dll"               - "c:/sys/bin/fmradiowidgetsplugin.dll"
+"/epoc32/data/z/resource/plugins/fmradiowidgetsplugin.qtplugin"     - "c:/resource/plugins/fmradiowidgetsplugin.qtplugin"
+
+;; Engine
+"/epoc32/release/armv5/udeb/fmradioengine.dll"                      - "c:/sys/bin/fmradioengine.dll"
+"/epoc32/release/armv5/udeb/fmradioengineutils.dll"                 - "c:/sys/bin/fmradioengineutils.dll"
+"/epoc32/release/armv5/udeb/fmradioenginesettings.dll"              - "c:/sys/bin/fmradioenginesettings.dll"
+"/epoc32/data/z/resource/fmradioenginesettings.rsc"                 - "c:/resource/fmradioenginesettings.rsc"
+
+;; Cenrep update
+@"radioenginecenrep.sisx", (0x10202BE9)
+
+;; Splash Screen
+"/epoc32/data/z/resource/hb/splashml/fmradio.splashml"              - "!:/resource/hb/splashml/fmradio.splashml"
+"/epoc32/data/z/resource/hb/splashml/fmradio.docml"                 - "!:/resource/hb/splashml/fmradio.docml"
+
+; -------- FM Radio homesceen widget --------
+
+"../radiohswidget/resource/fmradiohswidget.manifest"                                        - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.manifest",FM,"application/hs-widget-uninstall+xml",RR,RW
+"/epoc32/release/armv5/udeb/fmradiohswidget.dll"                                            - "c:/sys/bin/fmradiohswidget.dll"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.qtplugin"   - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.qtplugin"
+"../radiohswidget/resource/fmradiohswidget.manifest"                                        - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.manifest"
+"../radiohswidget/resource/fmradiohswidget.xml"                                             - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.xml"
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/fmradio-urel.pkg	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,75 @@
+;
+; 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:
+; Package file for FMRadio
+;
+
+; Languages
+&EN
+
+; Package header
+#{"fmradio"}, (0x2002FF53), 1, 0, 0, TYPE=SA, RU
+
+; Localised Vendor name
+%{"Nokia"}
+
+; Unique Vendor name
+:"Nokia"
+
+; Platform Dependency
+[0x101F7961],0,0,0,{"S60ProductID"}
+[0x20032DE7 ],0,0,0,{"S60ProductID"} ; Symbian^4
+
+; -------- files --------
+
+;; application files
+"/epoc32/release/armv5/urel/fmradio.exe"                            - "c:/sys/bin/fmradio.exe"
+"/epoc32/data/z/resource/apps/fmradio.rsc"                          - "c:/resource/apps/fmradio.rsc"
+"/epoc32/data/z/resource/apps/fmradio.r01"                          - "c:/resource/apps/fmradio.r01"
+"/epoc32/data/z/resource/apps/fmradio.mif"                          - "c:/resource/apps/fmradio.mif"
+"/epoc32/data/z/private/10003a3f/import/apps/fmradio_reg.rsc"       - "c:/private/10003a3f/import/apps/fmradio_reg.rsc"
+
+;; Localization
+"/epoc32/data/z/resource/qt/translations/fmradio_en.qm"           - "c:/resource/qt/translations/fmradio.qm"
+"/epoc32/data/z/resource/qt/translations/radiohswidget.qm"          - "c:/resource/qt/translations/radiohswidget.qm"
+
+;; Engine QT wrapper, ui engine and preset utility wrapper
+"/epoc32/release/armv5/urel/fmradioenginewrapper.dll"               - "c:/sys/bin/fmradioenginewrapper.dll"
+"/epoc32/release/armv5/urel/fmradiopresetstorage.dll"               - "c:/sys/bin/fmradiopresetstorage.dll"
+"/epoc32/release/armv5/urel/fmradiouiengine.dll"                    - "c:/sys/bin/fmradiouiengine.dll"
+"/epoc32/release/armv5/urel/fmradiowidgets.dll"                     - "c:/sys/bin/fmradiowidgets.dll"
+"/epoc32/release/armv5/urel/fmradiowidgetsplugin.dll"               - "c:/sys/bin/fmradiowidgetsplugin.dll"
+"/epoc32/data/z/resource/plugins/fmradiowidgetsplugin.qtplugin"     - "c:/resource/plugins/fmradiowidgetsplugin.qtplugin"
+
+;; Engine
+"/epoc32/release/armv5/urel/fmradioengine.dll"                      - "c:/sys/bin/fmradioengine.dll"
+"/epoc32/release/armv5/urel/fmradioengineutils.dll"                 - "c:/sys/bin/fmradioengineutils.dll"
+"/epoc32/release/armv5/urel/fmradioenginesettings.dll"              - "c:/sys/bin/fmradioenginesettings.dll"
+"/epoc32/data/z/resource/fmradioenginesettings.rsc"                 - "c:/resource/fmradioenginesettings.rsc"
+
+;; Cenrep update
+@"radioenginecenrep.sisx", (0x10202BE9)
+
+;; Splash Screen
+"/epoc32/data/z/resource/hb/splashml/fmradio.splashml"              - "!:/resource/hb/splashml/fmradio.splashml"
+"/epoc32/data/z/resource/hb/splashml/fmradio.docml"                 - "!:/resource/hb/splashml/fmradio.docml"
+
+; -------- FM Radio homesceen widget --------
+
+"../radiohswidget/resource/fmradiohswidget.manifest"                                        - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.manifest",FM,"application/hs-widget-uninstall+xml",RR,RW
+ 
+"/epoc32/release/armv5/urel/fmradiohswidget.dll"                                            - "c:/sys/bin/fmradiohswidget.dll"
+"/epoc32/data/z/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.qtplugin"   - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.qtplugin"
+"../radiohswidget/resource/fmradiohswidget.manifest"                                        - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.manifest"
+"../radiohswidget/resource/fmradiohswidget.xml"                                             - "c:/private/20022F35/import/widgetregistry/2002E6D6/fmradiohswidget.xml"
Binary file sis/nokia_rndcert_02.der has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/nokia_rndcert_02.key	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,15 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQC/TDP7KKIaf5+uW4OD2iVZuUMC2a+SeQTjf6srlKcOm+CpPNXn
+uLNm/8fdEnyOIuRXPRKmqhs1n0JkxEGHynELWMTuKXbQx9SRAGUXzyneGn+IJNnO
+vOKHWgKCouX2hfI8rtkdqJpqmO460gGsMgw+lsbeyWyW9lnfLxq+ZC7sqQIDAQAB
+AoGBALmUWZE8GBaQ3P4u9WUCSd3DJkkrmXIFSULSZeH/chlwCwDjbbhArHothVzo
+REE3hEFFlERvHbplZ+mNouzy7boduvgUzbksGrbGMLJ2qO1GzWWVwV+GzOWKd3ss
+/98Gwoy5R8pjnkqUE2wP1iJFw0FjvUTKcYv/z6t3LLJ0CsoBAkEA+c7ixvsviQ3J
+s0INytCKU2bf8fqFQJi1VI82ukxNsujGTQ9upVSjuvqPvWyDvvTdrUBHqO+3qPut
+sEh01Q8aiQJBAMQKDJPVRu4ud3mwUfEavzL5EjqwG1k9VCNGYsT4FwtrHcxu1oP/
+pk6M3rIZukqomoEEnHWPMwhrK3fhBqi0OSECQQDr40VXege4FnH5OI2Hj4afHMyp
+VdQQXGMWFyopnzXblFz0lXb43cTCIiorR9XcMqNFHybLypkWE5o+lRzlt55pAkBQ
+P/zeF5Sts//cpL0mgdh7OVKpC6ZmZaCnwAx2rUhhuDu+kDDoYCLoTOps5fNI1LRK
+1GRoC3LMo3Jr5IYhUYWBAkBpCpN6k4JU/mszq98EojHerQNxk8sPqvQKUzTutohT
+1gLX9yepGayB/TtT2EEJDkWOlnTy/dvN6W3vzbJYz97x
+-----END RSA PRIVATE KEY-----
Binary file sis/preinitialized_data/10207b87.cre has changed
Binary file sis/preinitialized_data/radioplayhistory.db has changed
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/radio_data.pkg	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,30 @@
+;
+; 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:
+; Package file for FMRadio
+;
+
+; Languages
+&EN 
+
+#{"Radio Preinitialized Data"}, (0xCAFEBABE), 1, 0, 0, TYPE=SA, RU
+
+%{"Nokia Corporation"}
+:"Nokia"
+
+[0x101f7961],0 ,0 ,0,{"S60ProductID"}
+
+; 
+"preinitialized_data\10207b87.cre"          - "c:\private\10202be9\persists\10207b87.cre" 
+"preinitialized_data\radioplayhistory.db"   - "c:\private\2002ff4e\radioplayhistory.db" 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/sis/radioenginecenrep.pkg	Fri Oct 15 16:26:27 2010 +0300
@@ -0,0 +1,29 @@
+;
+; 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:
+; Package file for FMRadio
+;
+
+; Languages
+&EN 
+
+#{"Radio Engine settings"}, (0x10202be9), 1,0,0, TYPE=SP
+
+%{"Nokia Corporation"}
+:"Nokia"
+
+[0x101f7961],0 ,0 ,0,{"S60ProductID"}
+
+; Install in Central Repository's private data cage 
+"\epoc32\data\z\private\10202be9\2002FF52.txt"  - "c:\private\10202be9\2002FF52.txt"