# HG changeset patch # User hgs # Date 1287149187 -10800 # Node ID 21be958eb3ce64c376e9268990a079d0a1cd0b00 # Parent 04837bf3a6285517bc9653b92540b8f4094645fd 201041 diff -r 04837bf3a628 -r 21be958eb3ce common/radio_global.h --- 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 }; } diff -r 04837bf3a628 -r 21be958eb3ce radioapp/bwins/fmradiouiengineu.def --- 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 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 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) - ?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 &, bool) - ?localCount@RadioStationModel@@QAEHXZ @ 73 NONAME ; int RadioStationModel::localCount(void) - ?list@RadioStationModel@@QBEABV?$QMap@IVRadioStation@@@@XZ @ 74 NONAME ; class QMap 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 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 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 & 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) - ?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 & 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) - ??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 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) - ?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 &, 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) - ??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 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) - ??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) 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) 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 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 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 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 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 & 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 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) + ?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) + ??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 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 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 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 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 const &) + ?toggleAudioRoute@RadioUiEngine@@QAEXXZ @ 163 NONAME ; void RadioUiEngine::toggleAudioRoute(void) + ?unsetType@RadioStation@@QAEXV?$QFlags@W4TypeFlag@RadioStation@@@@@Z @ 164 NONAME ; void RadioStation::unsetType(class QFlags) + ?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 &, 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 & 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) + ?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) + ?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 &, 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) + ?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) 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) 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) diff -r 04837bf3a628 -r 21be958eb3ce radioapp/bwins/fmradiowidgetsu.def --- 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) - ?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) - ?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) + ?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) + ?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) diff -r 04837bf3a628 -r 21be958eb3ce radioapp/eabi/fmradiouiengineu.def --- 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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/eabi/fmradiowidgetsu.def --- 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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radioapplication/inc/radioapplication.h --- 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(); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radioapplication/inc/testwindow_win32.h --- 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; diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radioapplication/src/testwindow_win32.cpp --- 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(); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radioapplication/win32_stubs/qsysteminfo.h --- 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); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radioapplication/win32_stubs/xqserviceprovider.h --- 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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radioenginewrapper/inc/radioenginewrapper_win32_p.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(); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radioenginewrapper/src/radioenginewrapper_win32_p.cpp --- 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(); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radioenginewrapper/src/t_radiodataparser.cpp --- 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( popFromSettingStack( mSettingHolderStack ) ) ); if ( mSettingHolderStack.count() == 0 ) { - if ( RadioData::Setting* setting = topOfSettingStack( mSettingStack ) ) + RadioData::Setting* setting = topOfSettingStack( mSettingStack ); + if ( setting ) { setting->setValue( *holder, *this ); } diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radiocontrolservice.h --- 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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radiohistorymodel.h --- 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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radiohistorymodel_p.h --- 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 mQueryModel; - QString mRtItemHolder; - int mRtItemClass; - bool mTopItemIsPlaying; bool mShowDetails; diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radiomonitorservice.h --- 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 +#include // 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 mNotificationQueue; + QTimer* mNotificationTimer; }; diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radioscannerengine.h --- 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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radiostation.h --- 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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radiostationmodel.h --- 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& 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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radiostationmodel_p.h --- 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 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 favorites() const; QList 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_ diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radiotimerpool.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 +#include +#include + +// User includes + +// Forward declarations +class QTimer; + +class RadioTimerPool : public QObject +{ + Q_OBJECT + + class RadioTimerItem + { + public: + + RadioTimerItem( RadioTimerPool* parent ); + ~RadioTimerItem(); + void reset(); + + QScopedPointer 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 mTimerMap; + +}; + + +#endif // RADIOTIMERPOOL_H diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radiouiengine.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 #include +#include #include #include @@ -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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/inc/radiouiengine_p.h --- 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 mMonitorService; - QWeakPointer mScannerEngine; + /*! + * Pool of multipurpose timers + */ + QScopedPointer mTimerPool; - /** - * Power off timer - * Owned by public class by setting parent - */ - QTimer* mPowerOffTimer; + QWeakPointer mScannerEngine; }; diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/radiouiengine.pro --- 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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiohistorydatabase.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( frequency / 1000 ) ); + query.addBindValue( static_cast( frequency / THOUSAND_HERTZ ) ); query.addBindValue( fromRds ); query.addBindValue( QDateTime::currentDateTime().toTime_t() ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiohistoryitem.cpp --- 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(); } /*! diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiohistorymodel.cpp --- 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 ) { diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiohistorymodel_p.cpp --- 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( station.frequency() / 1000 ) ); + query.addBindValue( static_cast( 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 ) { diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiomonitorservice.cpp --- 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(); + } } /*! diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiostation.cpp --- 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( "" ); -const QLatin1String HTML_TAG_END( "" ); 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 ) { diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiostationmodel.cpp --- 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 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 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( 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 ); } } diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiostationmodel_p.cpp --- 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( "" ); +const QLatin1String HTML_TAG_END( "" ); /*! * @@ -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() << frequency ); + } + } +} + +/*! + * + */ QList RadioStationModelPrivate::favorites() const { QList favoriteList; @@ -344,3 +414,77 @@ } return localList; } + +/*! + * + */ +void RadioStationModelPrivate::startRadioTextClearTimer() +{ + Q_Q( RadioStationModel ); + mUiEngine.api().startTimer( RADIOTEXT_CLEAR_TIMEOUT, + static_cast( 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 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 ); + + } +} diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiotimerpool.cpp --- /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 +#include + +// 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 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( 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; +} diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiouiengine.cpp --- 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 */ diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiouiengine/src/radiouiengine_p.cpp --- 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 ) ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiocarouselanimator.h --- 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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiocarouselitem.h --- 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 mStation; + uint mFrequency; + HbIconItem* mFavoriteItem; HbTextItem* mGenreItem; HbTouchArea* mFavoriteTouchArea; diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiocarouselitemobserver.h --- 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 + 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; }; diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiofadinglabel.h --- 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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiofrequencyscanner.h --- 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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiofrequencystrip.h --- 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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiofrequencystripbase.h --- 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 #include #include +#include // 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& 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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiofrequencystripdef.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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiohistoryview.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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiomainview.h --- 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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiostationcarousel.h --- 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 mAnimator; HbLabel* mInfoText; diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiostationsview.h --- 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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radioviewbase.h --- 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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/inc/radiowindow.h --- 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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/radiowidgets.pro --- 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 diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radiocarouselitem.cpp --- 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 ); } /*! diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radiofrequencyscanner.cpp --- 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( parent() )->setScanningMode( false ); - RadioUtil::carousel()->setScanningMode( false ); + RadioUtil::carousel()->setScanningMode( Scan::NotScanning ); } deleteLater(); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radiofrequencystrip.cpp --- 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&)), + this, SLOT(stationsRemoved(const QList&)) ); Radio::connect( stationModel, SIGNAL(modelReset()), this, SLOT(initEmptyItems()) ); } diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radiofrequencystripbase.cpp --- 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 @@ -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& frequencies ) { - Q_UNUSED( parent ); - updateStationsInRange( first, last, true ); + QList::const_iterator end = frequencies.constEnd(); + QSet freqItems; + // go frequencies list throught and fetch all frequencyItems required. Duplicates will be removed + // using set to prevent unneccessary item updates. + for( QList::const_iterator iter = frequencies.constBegin(); iter != end; ++iter ) { + freqItems.insert( mFrequencies.value( *iter ).mItem ); + } + QSet::const_iterator setEnd = freqItems.constEnd(); + QSet::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 ); } /*! diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radiohistoryview.cpp --- 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( 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( 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( DOCML::HV_NAME_CONTEXT_MENU ) ) { + contextMenu->setParent( this ); contextMenu->addAction( otherStoreFormatter.arg( "Amazon" ), this, SLOT(openOtherStore()) ); } } diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radiomainview.cpp --- 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( qApp ), SIGNAL(aboutToQuit()), this, SLOT(saveActivity()) ); - emit applicationReady(); - QScopedPointer 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( 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( DOCML::MV_NAME_CAROUSEL_BACKGROUND ); -// painter.drawPixmap( 0, 0, backgroundLabel->icon().pixmap().scaled( screenShotSize ) ); -// backgroundLabel = mUiLoader->findWidget( DOCML::MV_NAME_CAROUSEL_OVERLAY ); -// painter.drawPixmap( 0, 0, backgroundLabel->icon().pixmap().scaled( screenShotSize ) ); + HbLabel* backgroundLabel = mUiLoader->findWidget( DOCML::MV_NAME_CAROUSEL_BACKGROUND ); + painter.drawPixmap( 0, 0, backgroundLabel->icon().pixmap().scaled( screenShotSize ) ); + backgroundLabel = mUiLoader->findWidget( 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 storage( new AfActivityStorage() ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radiostationcarousel.cpp --- 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; diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radiostationsview.cpp --- 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 #include #include +#include // 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( DOCML::NAME_CONTEXT_MENU ); + menu->setParent( this ); *mSelectedStation = mFilterModel->data( item->modelIndex(), RadioRole::RadioStationRole ).value(); @@ -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 ); diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radiostripbase.cpp --- 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 ), diff -r 04837bf3a628 -r 21be958eb3ce radioapp/radiowidgets/src/radioutil.cpp --- 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; } diff -r 04837bf3a628 -r 21be958eb3ce radioengine/engine/src/cradioengineimp.cpp --- 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; diff -r 04837bf3a628 -r 21be958eb3ce radioengine/engine/stub/bwins/fmradioengine_stubu.def --- 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) diff -r 04837bf3a628 -r 21be958eb3ce radioengine/engine/stub/eabi/fmradioengine_stubu.def --- 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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/settings/src/cradioregion.cpp --- 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; } diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/api/cradioaudiorouter.h --- 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 iRoutableAudios; + CRadioRoutableAudio* iRoutableAudio; }; diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/api/cradioroutableaudio.h --- 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(); diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/api/cradiosystemeventcollector.h --- 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 +#include class MRadioSystemEventObserver; class MRadioAudioRoutingObserver; -NONSHARABLE_CLASS( CRadioSystemEventCollector ) +NONSHARABLE_CLASS( CRadioSystemEventCollector ) : public CBase { public: diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/src/cradioaccessoryobserver.cpp --- 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__ diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/src/cradioaudiorouter.cpp --- 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( 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; } diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/src/cradioremcontargetimp.cpp --- 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; } diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/src/cradioroutableaudio.cpp --- 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; diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/src/cradiosystemeventcollectorimp.cpp --- 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( this ); obj = object; } diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/stub/inc/cradioaccessoryobserver_stub.h --- 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 #include #include #include +// 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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/stub/src/cradioaccessoryobserver_stub.cpp --- 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 ); + } diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/stub/src/cradioremcontargetimp_stub.cpp --- 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 @@ -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( aPtr ); + CRadioRemConTargetImp* self = + reinterpret_cast (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; } diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/bwins/UtilsTestModuleu.def --- /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 &) + diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/conf/UtilsTestModule.cfg --- /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] diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/conf/atsconf.txt --- /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 +; +; +; +; diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/custom/postrun_custom.xml --- /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 @@ + + fetch-log + + + + + + + + fetch-log + + + + + + + + fetch-log + + + + + + + + fetch-log + + + + + + diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/custom/prerun_custom.xml --- /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 @@ + + makedir + + + + + + makedir + + + + + + makedir + + + + + + makedir + + + + + diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/eabi/UtilsTestModuleu.def --- /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 + diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/group/RestoreOrigCenrep.cmd --- /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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/group/TestEnvInit.cmd --- /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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/group/UtilsTestModule.mmp --- /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 + +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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/group/UtilsTestModule.pkg --- /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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/group/UtilsTestModule_DoxyFile.txt --- /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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/group/UtilsTestModule_nrm.mmp --- /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 + +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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/group/bld.inf --- /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 + + +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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/inc/UtilsTestModule.h --- /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 +#include +#include +#include +#include +#include +// 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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/inc/trace.h --- /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 // TCleanupItem +#include "traceconfiguration.hrh" + +#ifdef TRACE_INTO_FILE +#include // RFileLogger +#else +#include // 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 + diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/inc/traceconfiguration.hrh --- /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 + diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/init/TestFramework.ini --- /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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/rom/utilstestmodule.iby --- /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 + + +file=ABI_DIR\BUILD_DIR\utilstestmodule.dll SHARED_LIB_DIR\utilstestmodule.dll PAGED + +#endif // __UTILSTESTMODULE_IBY__ + + diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/src/UtilsTestModule.cpp --- /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 +#include +#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 diff -r 04837bf3a628 -r 21be958eb3ce radioengine/utils/tsrc/src/UtilsTestModuleBlocks.cpp --- /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 +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 diff -r 04837bf3a628 -r 21be958eb3ce radiohswidget/inc/radiohswidget.h --- 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 +// 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; diff -r 04837bf3a628 -r 21be958eb3ce radiohswidget/resource/fmradiohswidget.docml --- 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 @@ - + @@ -38,25 +38,38 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + @@ -64,24 +77,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -89,6 +140,7 @@ + @@ -104,11 +156,14 @@ + - + + + diff -r 04837bf3a628 -r 21be958eb3ce radiohswidget/src/radiohswidget.cpp --- 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 ( + 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 ( @@ -643,6 +716,36 @@ "qtc_radio_tuner_normal"); mInformationLonelyRowLabel->setTextColor(color); } + + mAnimationIcon = qobject_cast ( + 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 ( + mInformationFirstRowWithFavoriteLabel = qobject_cast ( 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 ( + // Find push button for tuner area. + mInformationAreaBackgroundButton = qobject_cast ( 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 ( - 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); } } diff -r 04837bf3a628 -r 21be958eb3ce sis/create_and_sign_sis.bat --- /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 diff -r 04837bf3a628 -r 21be958eb3ce sis/create_data_sis.bat --- /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 diff -r 04837bf3a628 -r 21be958eb3ce sis/create_tester_sis.bat --- /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 diff -r 04837bf3a628 -r 21be958eb3ce sis/create_ui_udeb_sis.bat --- /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 diff -r 04837bf3a628 -r 21be958eb3ce sis/create_ui_urel_sis.bat --- /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 diff -r 04837bf3a628 -r 21be958eb3ce sis/errrd diff -r 04837bf3a628 -r 21be958eb3ce sis/errrd.pkg --- /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" diff -r 04837bf3a628 -r 21be958eb3ce sis/fmradio-tester.pkg --- /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" + diff -r 04837bf3a628 -r 21be958eb3ce sis/fmradio-udeb.pkg --- /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" + diff -r 04837bf3a628 -r 21be958eb3ce sis/fmradio-urel.pkg --- /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" diff -r 04837bf3a628 -r 21be958eb3ce sis/nokia_rndcert_02.der Binary file sis/nokia_rndcert_02.der has changed diff -r 04837bf3a628 -r 21be958eb3ce sis/nokia_rndcert_02.key --- /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----- diff -r 04837bf3a628 -r 21be958eb3ce sis/preinitialized_data/10207b87.cre Binary file sis/preinitialized_data/10207b87.cre has changed diff -r 04837bf3a628 -r 21be958eb3ce sis/preinitialized_data/radioplayhistory.db Binary file sis/preinitialized_data/radioplayhistory.db has changed diff -r 04837bf3a628 -r 21be958eb3ce sis/radio_data.pkg --- /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" diff -r 04837bf3a628 -r 21be958eb3ce sis/radioenginecenrep.pkg --- /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"