--- 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"